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 чаще всего используется для перехвата случайного доступа к диску или сети в потоке main приложения, где принимаются операции пользовательского интерфейса и выполняются анимации. Сохранение дисковых и сетевых операций в потоке main обеспечивает гораздо более плавный и быстрый отклик приложений. Сохраняя реагирование потока main приложения, вы также предотвращаете показ диалоговых окон ANR для пользователей.

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

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

public void onCreate() {
                StrictMode.setThreadPolicy(new {@link ThreadPolicy.Builder StrictMode.ThreadPolicy.Builder}()
                        .detectDiskReads()
                        .detectDiskWrites()
                        .detectNetwork()   // or .detectAll() for all detectable problems
                        .penaltyLog()
                        .build());
                StrictMode.setVmPolicy(new {@link VmPolicy.Builder StrictMode.VmPolicy.Builder}()
                        .detectLeakedSqlLiteObjects()
                        .detectLeakedClosableObjects()
                        .penaltyLog()
                        .penaltyDeath()
                        .build());
                super.onCreate();
            }

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

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

<p class="note">StrictMode не является механизмом безопасности и не гарантирует поиск всех дисков или сетевых обращений. Хотя он распространяет свое состояние через границы процесса при выполнении android.os.Binder вызовов, он по-прежнему является оптимальным механизмом усилий. Примечательно, что доступ к диску или сети из вызовов JNI не обязательно активирует его.

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

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

Свойства

Class

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

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

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

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

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

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

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

PeerReference

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

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

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

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

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

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

Методы

AllowThreadDiskReads()

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

AllowThreadDiskWrites()

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

Clone()

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

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

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

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

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

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

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

Equals(Object)

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

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

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

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

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

GetVmPolicy()

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

JavaFinalize()

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

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

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

Notify()

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

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

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

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

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

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

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

SetVmPolicy(StrictMode+VmPolicy)

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

ToArray<T>()

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

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

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

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

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

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

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

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

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

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

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

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

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

IJavaPeerable.Disposed()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

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