StrictMode 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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线程上的意外磁盘或网络访问,其中接收 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.Handler
、 android.os.AsyncTask
、 android.app.IntentService
等。但不要觉得被迫修复 StrictMode 发现的所有内容。 具体而言,在正常的活动生命周期中,通常需要进行磁盘访问的许多情况。 使用 StrictMode 查找意外执行的操作。 不过,UI 线程上的网络请求几乎总是一个问题。
<p class=“note”>StrictMode 不是一种安全机制,不保证能够找到所有磁盘或网络访问。 虽然在执行 android.os.Binder
调用时,它确实会跨进程边界传播其状态,但它最终仍然是一种尽力而为的机制。 值得注意的是,来自 JNI 调用的磁盘或网络访问不一定会触发它。
的 android.os.StrictMode
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。 (继承自 Object) |
JniPeerMembers |
StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。 |
PeerReference |
StrictMode 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。 (继承自 Object) |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 (继承自 Object) |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 (继承自 Object) |
方法
AllowThreadDiskReads() |
一个方便的包装器,它从 |
AllowThreadDiskWrites() |
一个从 获取当前 |
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 是一种开发人员工具,可检测意外中可能正在执行的操作,并引起你的注意,以便修复它们。 |