CloseGuard Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no 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
- Herança
- Atributos
Comentários
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java).
Um exemplo simples:
{@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();
}
}
}
}
No uso em que o recurso a ser explicitamente limpo é alocado após a construção do objeto, a proteção CloseGuard pode ser adiada. Por exemplo:
{@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();
}
}
}
}
Quando usado em um construtor, as chamadas devem open ocorrer no final do construtor, pois uma exceção que causaria o encerramento abrupto do construtor significará que o usuário não terá uma referência ao objeto para limpar explicitamente. Quando usado em um método, a chamada deve ocorrer logo após a open aquisição do recurso.
Documentação Java para android.util.CloseGuard.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usadas de acordo com os termos descritos na Licença de Atribuição Creative Commons 2.5.
Construtores
| Nome | Description |
|---|---|
| CloseGuard() |
Constrói uma nova instância do CloseGuard. |
Propriedades
| Nome | Description |
|---|---|
| Class |
Retorna a classe de runtime deste |
| Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
| JniIdentityHashCode |
Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade. (Herdado de Object) |
| JniManagedPeerState |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| JniPeerMembers |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). |
| PeerReference |
Obtém a referência de objeto JNI para este par Java. (Herdado de Object) |
| ThresholdClass |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
| ThresholdType |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
Métodos
| Nome | Description |
|---|---|
| Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
| Close() |
Marca essa instância do CloseGuard como fechada para evitar avisos sobre a finalização. |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| Dispose() |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| Dispose(Boolean) |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| DisposeUnlessReferenced() |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| Equals(Object) |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| Equals(Object) |
Indica se algum outro objeto é "igual a" este. (Herdado de Object) |
| GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
| JavaFinalize() |
Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto. (Herdado de Object) |
| Notify() |
Ativa um único thread que está aguardando no monitor deste objeto. (Herdado de Object) |
| NotifyAll() |
Ativa todos os threads que estão aguardando no monitor deste objeto. (Herdado de Object) |
| Open(String) |
Inicializa a instância com um aviso de que o chamador deve ter chamado explicitamente o |
| SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle (Herdado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| ToArray<T>() |
Cria uma matriz gerenciada com base nesse wrapper de matriz Java. (Herdado de Object) |
| ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
| UnregisterFromRuntime() |
Cancela o registro desse par Java do runtime de interoperabilidade. (Herdado de Object) |
| Wait() |
Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<> (Herdado de Object) |
| Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| WarnIfOpen() |
Registra um aviso se o chamador não limpou corretamente chamando um método de fechamento explícito antes da finalização. |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IJavaPeerable.Disposed() |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| IJavaPeerable.Finalized() |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). (Herdado de JavaObject) |
Métodos de Extensão
| Nome | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtém o nome JNI do tipo da instância |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo marcada por runtime do Android. |
| JavaCast<TResult>(IJavaObject) |
CloseGuard é um mecanismo para sinalizar a limpeza implícita do finalizador de recursos que deveriam ter sido limpos por métodos de fechamento explícitos (também conhecidos como "métodos de terminação explícitos" no Effective Java). |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |