Язык

CloseGuard Класс

Определение

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной 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
Наследование
CloseGuard
Атрибуты

Комментарии

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

Простой пример:

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

При использовании, когда ресурс, который будет явно очищаться, выделяется после создания объекта, защита CloseGuard может быть отложена. Рассмотрим пример.

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

При использовании в конструкторе вызовы open должны выполняться в конце конструктора, так как исключение, вызывающее резкое завершение конструктора, означает, что пользователь не будет иметь ссылку на объект для очистки явным образом. При использовании в методе вызов open должен происходить сразу после приобретения ресурсов.

Java документации по android.util.CloseGuard.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Конструкторы

Имя. Описание
CloseGuard()

Создает новый экземпляр CloseGuard.

Свойства

Имя. Описание
Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

(Унаследовано от Object)
JniManagedPeerState

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
JniPeerMembers

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

(Унаследовано от Object)
ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

(Унаследовано от Object)
ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

(Унаследовано от Object)

Методы

Имя. Описание
Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Close()

Помечает этот экземпляр CloseGuard как закрытый, чтобы избежать предупреждений о завершении.

Construct(JniObjectReference, JniObjectReferenceOptions)

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
Dispose()

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
Dispose(Boolean)

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
DisposeUnlessReferenced()

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
Equals(Object)

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
GetHashCode()

Возвращает хэш-значение кода для объекта.

(Унаследовано от Object)
JavaFinalize()
Устаревшие.

Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет.

(Унаследовано от Object)
Notify()

Просыпается один поток, ожидающий монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
Open(String)

Инициализирует экземпляр с предупреждением о том, что вызывающий объект должен явно вызывать closeMethodName метод, а не полагаться на завершение.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
ToArray<T>()

Создает управляемый массив из этого Java оболочки массива.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

(Унаследовано от Object)
Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.>

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
WarnIfOpen()

Записывает предупреждение, если вызывающий объект не удалялся должным образом, вызвав явный метод закрытия перед завершением.

Явные реализации интерфейса

Имя. Описание
IJavaPeerable.Disposed()

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
IJavaPeerable.Finalized()

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

(Унаследовано от JavaObject)

Методы расширения

Имя. Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java).

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

Применяется к