Share via


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线程上的意外磁盘或网络访问,其中接收 UI 操作并发生动画。 使磁盘和网络操作远离main线程,使应用程序更加流畅、响应更迅速。 通过保持应用程序的main线程响应,还可以防止向用户显示 ANR 对话框

<p class=“note”>请注意,即使 Android 设备的磁盘通常位于闪存上,许多设备在该内存上运行文件系统,并发性非常有限。 通常,几乎所有的磁盘访问速度都很快,但在个别情况下,当某些 I/O 发生在其他进程的后台时,速度可能会明显变慢。 如果可能,最好假设此类事情不快。

从 、 android.app.Activity或其他应用程序组件的 android.app.Application#onCreate 方法的android.app.Application早期启用的示例代码:

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.Handlerandroid.os.AsyncTaskandroid.app.IntentService等。但不要觉得被迫修复 StrictMode 发现的所有内容。 具体而言,在正常的活动生命周期中,通常需要进行磁盘访问的许多情况。 使用 StrictMode 查找意外执行的操作。 不过,UI 线程上的网络请求几乎总是一个问题。

<p class=“note”>StrictMode 不是一种安全机制,不保证能够找到所有磁盘或网络访问。 虽然在执行 android.os.Binder 调用时,它确实会跨进程边界传播其状态,但它最终仍然是一种尽力而为的机制。 值得注意的是,来自 JNI 调用的磁盘或网络访问不一定会触发它。

android.os.StrictModeJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。

(继承自 Object)
JniPeerMembers

StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。

PeerReference

StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

(继承自 Object)
ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

(继承自 Object)

方法

AllowThreadDiskReads()

一个方便的包装器,它从 #getThreadPolicy获取当前 ThreadPolicy ,对其进行修改以允许磁盘读取,并使用 #setThreadPolicy设置新策略,并返回旧策略,以便可以在块末尾还原它。

AllowThreadDiskWrites()

一个从 获取当前 ThreadPolicy#getThreadPolicy的便捷包装器,可对其进行修改以允许磁盘读取 &和写入,并使用 设置新策略 #setThreadPolicy,并返回旧策略,以便可以在块末尾还原它。

Clone()

创建并返回此对象的副本。

(继承自 Object)
Dispose()

StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。

(继承自 Object)
Dispose(Boolean)

StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。

(继承自 Object)
EnableDefaults()

启用建议的 StrictMode 默认值,只记录冲突。

Equals(Object)

指示某个其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetThreadPolicy()

返回当前线程的策略。

GetVmPolicy()

获取当前 VM 策略。

JavaFinalize()

当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。

(继承自 Object)
NoteSlowCall(String)

对于要注意的代码,它的速度很慢。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetThreadPolicy(StrictMode+ThreadPolicy)

设置应检测当前线程上的操作的策略,以及在发生此类操作时受到的惩罚。

SetVmPolicy(StrictMode+VmPolicy)

为 VM 进程中应检测到哪些操作设置策略, (在任何线程上) ,以及在发生此类操作时受到的惩罚。

ToArray<T>()

StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。

(继承自 Object)
Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</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 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。

适用于