Lenguaje

CloseGuard Clase

Definición

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en 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
Herencia
CloseGuard
Atributos

Comentarios

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

Un ejemplo sencillo:

{@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();
                      }
                  }
              }
            }

En el uso en el que el recurso que se va a limpiar explícitamente se asigna después de la construcción del objeto, se puede aplazar la protección de CloseGuard. Por ejemplo:

{@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();
                      }
                  }
              }
            }

Cuando se usa en un constructor, las llamadas a open deben producirse al final del constructor, ya que una excepción que provocaría una terminación abrupta del constructor significará que el usuario no tendrá una referencia al objeto para limpiar explícitamente. Cuando se usa en un método, la llamada a open debe producirse justo después de la adquisición de recursos.

Java documentación para android.util.CloseGuard.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Constructores

Nombre Description
CloseGuard()

Construye una nueva instancia de CloseGuard.

Propiedades

Nombre Description
Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad.

(Heredado de Object)
JniManagedPeerState

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
JniPeerMembers

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

PeerReference

Obtiene la referencia de objeto JNI para este Java del mismo nivel.

(Heredado de Object)
ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)
ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)

Métodos

Nombre Description
Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Close()

Marca esta instancia de CloseGuard como cerrada para evitar advertencias sobre la finalización.

Construct(JniObjectReference, JniObjectReferenceOptions)

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
Dispose()

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
Dispose(Boolean)

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
DisposeUnlessReferenced()

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
Equals(Object)

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetHashCode()

Devuelve un valor de código hash para el objeto .

(Heredado de Object)
JavaFinalize()
Obsoletos.

Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto .

(Heredado de Object)
Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
Open(String)

Inicializa la instancia con una advertencia de que el autor de la llamada debe haber llamado explícitamente al closeMethodName método en lugar de confiar en la finalización.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
ToArray<T>()

Crea una matriz administrada a partir de este contenedor de matriz Java.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto .

(Heredado de Object)
UnregisterFromRuntime()

Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><>

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
WarnIfOpen()

Registra una advertencia si el autor de la llamada no ha limpiado correctamente llamando a un método de cierre explícito antes de la finalización.

Implementaciones de interfaz explícitas

Nombre Description
IJavaPeerable.Disposed()

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
IJavaPeerable.Finalized()

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

(Heredado de JavaObject)

Métodos de extensión

Nombre Description
GetJniTypeName(IJavaPeerable)

Obtiene el nombre JNI del tipo de la instancia self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

CloseGuard es un mecanismo para marcar la limpieza implícita de los recursos que deben haberse limpiado mediante métodos de cierre explícitos (también conocidos como "métodos de terminación explícitos" en Effective Java).

TryJavaCast<TResult>(IJavaPeerable, TResult)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a