CloseGuard Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans 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
- Héritage
- Attributs
Remarques
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java).
Exemple simple :
{@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();
}
}
}
}
Dans l’utilisation où la ressource à nettoyer explicitement est allouée après la construction de l’objet, la protection CloseGuard peut être différée. Par exemple:
{@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();
}
}
}
}
Lorsqu’il est utilisé dans un constructeur, les appels à doivent open se produire à la fin du constructeur, car une exception qui entraînerait un arrêt brusque du constructeur signifie que l’utilisateur n’aura pas de référence à l’objet de nettoyer explicitement. Lorsqu’il est utilisé dans une méthode, l’appel à open doit se produire juste après l’acquisition de ressources.
Java documentation pour android.util.CloseGuard.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Constructeurs
| Nom | Description |
|---|---|
| CloseGuard() |
Construit une nouvelle instance CloseGuard. |
Propriétés
| Nom | Description |
|---|---|
| Class |
Retourne la classe runtime de ce |
| Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
| JniIdentityHashCode |
Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité. (Hérité de Object) |
| JniManagedPeerState |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| JniPeerMembers |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). |
| PeerReference |
Obtient la référence d’objet JNI pour cet homologue Java. (Hérité de Object) |
| ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. (Hérité de Object) |
| ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. (Hérité de Object) |
Méthodes
| Nom | Description |
|---|---|
| Clone() |
Crée et retourne une copie de cet objet. (Hérité de Object) |
| Close() |
Marque cette instance CloseGuard comme fermée pour éviter les avertissements lors de la finalisation. |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| Dispose() |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| Dispose(Boolean) |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| DisposeUnlessReferenced() |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| Equals(Object) |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
| GetHashCode() |
Retourne une valeur de code de hachage pour l’objet. (Hérité de Object) |
| JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
| Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
| NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
| Open(String) |
Initialise l’instance avec un avertissement indiquant que l’appelant doit avoir appelé explicitement la |
| SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| ToArray<T>() |
Crée un tableau managé à partir de ce wrapper de tableau Java. (Hérité de Object) |
| ToString() |
Retourne une représentation sous forme de chaîne de l’objet. (Hérité de Object) |
| UnregisterFromRuntime() |
Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité. (Hérité de Object) |
| Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
| Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
| Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
| WarnIfOpen() |
Enregistre un avertissement si l’appelant n’a pas correctement nettoyé en appelant une méthode de fermeture explicite avant la finalisation. |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IJavaPeerable.Disposed() |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| IJavaPeerable.Finalized() |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). (Hérité de JavaObject) |
Méthodes d’extension
| Nom | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtient le nom JNI du type de l’instance |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
| JavaCast<TResult>(IJavaObject) |
CloseGuard est un mécanisme permettant de marquer le nettoyage implicite du finaliseur des ressources qui doivent avoir été nettoyées par des méthodes de fermeture explicites (appelées « méthodes d’arrêt explicites » dans Effective Java). |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |