CloseGuard Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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 |
| 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) |
| 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. |
| 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) |
| 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() |
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 |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| 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() |
Notifica al tiempo de ejecución de interoperabilidad que se ha eliminado este mismo nivel administrado. (Heredado de Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Libera este Java del mismo nivel a menos que otra referencia administrada lo conserve. (Heredado de Object) |
| IJavaPeerable.Finalized() |
Notifica al tiempo de ejecución de interoperabilidad que se ha finalizado este mismo nivel administrado. (Heredado de Object) |
| IJavaPeerable.JniManagedPeerState |
Obtiene el estado que describe la relación entre este par administrado y su referencia de JNI. (Heredado de Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Establece el código hash de identidad de interoperabilidad para este Java del mismo nivel. (Heredado de Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Establece el estado del mismo nivel administrado y JNI para este Java del mismo nivel. (Heredado de Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Establece la referencia de objeto JNI usada por este par administrado. (Heredado de Object) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| 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 |