CloseGuard Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java").
[Android.Runtime.Register("android/util/CloseGuard", ApiSince=30, DoNotGenerateAcw=true)]
public sealed class CloseGuard : Java.Lang.Object
[<Android.Runtime.Register("android/util/CloseGuard", ApiSince=30, DoNotGenerateAcw=true)>]
type CloseGuard = class
inherit Object
- Vererbung
- Attribute
Hinweise
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java").
Ein einfaches Beispiel:
{@code
class Foo {
private final CloseGuard guard = new CloseGuard();
...
public Foo() {
...;
guard.open("cleanup");
}
public void cleanup() {
guard.close();
...;
if (Build.VERSION.SDK_INT >= 28) {
Reference.reachabilityFence(this);
}
// For full correctness in the absence of a close() call, other methods may also need
// reachabilityFence() calls.
}
protected void finalize() throws Throwable {
try {
// Note that guard could be null if the constructor threw.
if (guard != null) {
guard.warnIfOpen();
}
cleanup();
} finally {
super.finalize();
}
}
}
}
Wenn die ressource, die explizit bereinigt werden soll, nach der Objektkonstruktion zugeordnet wird, kann der CloseGuard-Schutz zurückgestellt werden. Beispiel:
{@code
class Bar {
private final CloseGuard guard = new CloseGuard();
...
public Bar() {
...;
}
public void connect() {
...;
guard.open("cleanup");
}
public void cleanup() {
guard.close();
...;
if (Build.VERSION.SDK_INT >= 28) {
Reference.reachabilityFence(this);
}
// For full correctness in the absence of a close() call, other methods may also need
// reachabilityFence() calls.
}
protected void finalize() throws Throwable {
try {
// Note that guard could be null if the constructor threw.
if (guard != null) {
guard.warnIfOpen();
}
cleanup();
} finally {
super.finalize();
}
}
}
}
Bei Verwendung in einem Konstruktor sollten Aufrufe open am Ende des Konstruktors erfolgen, da eine Ausnahme, die zu einer abrupten Beendigung des Konstruktors führen würde, bedeuten, dass der Benutzer keinen Verweis auf das Objekt hat, um explizit zu bereinigen. Bei Verwendung in einer Methode sollte der Aufruf open unmittelbar nach dem Ressourcenerwerb erfolgen.
Java Dokumentation für android.util.CloseGuard.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| CloseGuard() |
Erstellt eine neue CloseGuard-Instanz. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Class |
Gibt die Laufzeitklasse dieses Werts |
| Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
| JniIdentityHashCode |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| JniPeerMembers |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). |
| PeerReference |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. (Geerbt von Object) |
| ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. (Geerbt von Object) |
Methoden
| Name | Beschreibung |
|---|---|
| Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
| Close() |
Markiert diese CloseGuard-Instanz als geschlossen, um Warnungen bei der Finalisierung zu vermeiden. |
| Dispose() |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| Dispose(Boolean) |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
| GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
| JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
| Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
| NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
| Open(String) |
Initialisiert die Instanz mit einer Warnung, dass der Aufrufer die |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| ToArray<T>() |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
| UnregisterFromRuntime() |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><> (Geerbt von Object) |
| Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
| Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
| WarnIfOpen() |
Protokolliert eine Warnung, wenn der Aufrufer vor abschluss der Fertigstellung keine explizite Close-Methode aufgerufen hat. |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| IJavaPeerable.Finalized() |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| IJavaPeerable.JniManagedPeerState |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). (Geerbt von Object) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
CloseGuard ist ein Mechanismus zum Kennzeichnen der impliziten Endisierung von Ressourcen, die durch explizite Close-Methoden bereinigt werden sollten (auch als "explizite Beendigungsmethoden" in "Effective Java"). |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |