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 — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной 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 |
Возвращает класс среды выполнения этого |
| 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) |
Инициализирует экземпляр с предупреждением о том, что вызывающий объект должен явно вызывать |
| 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 типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
CloseGuard — это механизм для неявного очистки неявного метода завершения ресурсов, которые должны были быть удалены явными методами закрытия (ака "явные методы завершения" в эффективной Java). |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |