CloseGuard Classe

Definição

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
CloseGuard
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 Object.

(Herdado de Object)
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 closeMethodName método em vez de depender da finalizaçã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 self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

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 selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a