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 чаще всего используется для перехвата случайного доступа к диску или сети в потоке 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 |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
JniIdentityHashCode |
StrictMode — это средство разработчика, которое обнаруживает случайные действия, которые вы можете сделать, и обращает их на ваше внимание, чтобы вы могли их исправить. (Унаследовано от Object) |
JniPeerMembers |
StrictMode — это средство разработчика, которое обнаруживает случайные действия, которые вы можете сделать, и обращает их на ваше внимание, чтобы вы могли их исправить. |
PeerReference |
StrictMode — это средство разработчика, которое обнаруживает случайные действия, которые вы можете сделать, и обращает их на ваше внимание, чтобы вы могли их исправить. (Унаследовано от Object) |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
Методы
AllowThreadDiskReads() |
Удобная оболочка, которая принимает текущую |
AllowThreadDiskWrites() |
Удобная оболочка, которая принимает текущую |
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 — это средство разработчика, которое обнаруживает случайные действия, которые вы можете сделать, и обращает их на ваше внимание, чтобы вы могли их исправить. |