Язык

StrictMode Класс

Определение

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

[Android.Runtime.Register("android/os/StrictMode", DoNotGenerateAcw=true)]
public sealed class StrictMode : Java.Lang.Object
[<Android.Runtime.Register("android/os/StrictMode", DoNotGenerateAcw=true)>]
type StrictMode = class
    inherit Object
Наследование
StrictMode
Атрибуты

Комментарии

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

StrictMode чаще всего используется для перехвата случайного диска или сетевого доступа в основном потоке приложения, где выполняются операции пользовательского интерфейса и анимации. Сохранение операций диска и сети с основного потока делает гораздо более гладким, более адаптивным приложениям. Сохраняя скорость реагирования основного потока приложения, вы также предотвращаете отображение диалогов ANR пользователям.

Обратите внимание, что, хотя диск устройства Android часто находится в памяти флэш-памяти, многие устройства запускают файловую систему поверх этой памяти с очень ограниченным параллелизмом. Это часто случается, что почти все доступы к диску быстры, но в отдельных случаях могут быть значительно медленнее, когда определенные операции ввода-вывода происходят в фоновом режиме из других процессов. Если это возможно, лучше предположить, что такие вещи не быстры.

Пример кода для включения в начале метода или android.app.Applicationandroid.app.Activityдругого android.app.Application#onCreate компонента приложения:

override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
                StrictMode.setThreadPolicy(
                    StrictMode.ThreadPolicy.Builder()
                    .detectAll()
                    .build()
                )
                StrictMode.setVmPolicy(
                    StrictMode.VmPolicy.Builder()
                    .detectAll()
                    .build()
                )
            }

Вы можете решить, что должно произойти при обнаружении нарушения. Например, используя ThreadPolicy.Builder#penaltyLog выходные данные adb logcat во время использования приложения, вы увидите нарушения по мере их возникновения.

Если вы обнаружите нарушения, которые вы чувствуете, проблематичны, существуют различные средства, которые помогут решить их: потоки, android.os.Handler, android.os.AsyncTaskи android.app.IntentServiceт. д. Но не чувствуйте себя вынужденным исправить все, что находит StrictMode. В частности, во время нормального жизненного цикла действий часто требуется доступ к диску. Используйте StrictMode, чтобы найти вещи, которые вы сделали случайно. Сетевые запросы в потоке пользовательского интерфейса почти всегда являются проблемой.

StrictMode не является механизмом безопасности и не гарантирует поиск всех дисков или сетевых доступа. Хотя он распространяет свое состояние через границы процесса при выполнении android.os.Binder вызовов, он по-прежнему является лучшим механизмом усилий. В частности, диск или сетевой доступ из вызовов JNI не обязательно активирует его.

Документация по Java для android.os.StrictMode.

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Свойства

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

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

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

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

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

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

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

Предоставляет метаданные однорангового члена JNI для этого типа.

PeerReference

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

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

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

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

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

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

Методы

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

Удобный оболочка, которая принимает текущий ThreadPolicy из #getThreadPolicy, изменяет его, чтобы разрешить чтение диска, и задает новую политику с #setThreadPolicy, возвращая старую политику, чтобы можно было восстановить ее в конце блока.

AllowThreadDiskWrites()

Удобная оболочка, которая принимает текущую ThreadPolicy#getThreadPolicyиз, изменяет ее, чтобы разрешить операции чтения и записи диска, а также задает новую политику с #setThreadPolicyвозвратом старой политики, чтобы восстановить ее в конце блока.

Clone()

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

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

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

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

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

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

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

Equals(Object)

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

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

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

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

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

Возвращает политику текущего потока.

GetVmPolicy()

Возвращает текущую политику виртуальной машины.

JavaFinalize()
Устаревшие.

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

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

Для кода следует отметить, что это медленно.

Notify()

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

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

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

(Унаследовано от Object)
SetHandle(IntPtr, JniHandleOwnership)

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

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

(Унаследовано от JavaObject)
SetThreadPolicy(StrictMode+ThreadPolicy)

Задает политику для того, какие действия следует обнаружить в текущем потоке, а также штраф при возникновении таких действий.

SetVmPolicy(StrictMode+VmPolicy)

Задает политику для того, какие действия в процессе виртуальной машины (в любом потоке) должны быть обнаружены, а также штраф при возникновении таких действий.

ToArray<T>()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

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

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

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

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

StrictMode — это средство разработчика, которое обнаруживает вещи, которые вы можете сделать случайно и приносит их в внимание, чтобы вы могли их исправить.

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

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