android StrictMode严苛模式
StrictMode一般用于线下检测,可以在应用的Application、Activity或者其他应用组件的onCreate方法中加入检测代码
if (DEBUG_STRICT_MODE) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() //一个针对线程
.detectDiskReads()
.detectDiskWrites()
.penaltyFlashScreen() //屏幕闪烁提示,
.penaltyDialog() //弹出违规提示框
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog() //penaltyLog()表示将警告输出到LogCat
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() // 一个针对虚拟机
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.detectActivityLeaks() //检测Activity泄露
.penaltyLog() //penaltyLog()表示将警告输出到LogCat
.penaltyDeath() //表示直接Crash掉当前应用程序
.build());
}使用StrictMode之后,系统会自动检测出来主线程当中一些违例的情况并的logcat中打印出来,同时按照配置给出相应的反应。它主要用来检测两大问题,一个是线程策略,另一个是虚拟机策略,
打印Log示例:
12-19 17:28:54.226 2729-2729/? D/StrictMode: StrictMode policy violation; ~duration=44 ms: android.os.StrictMode$StrictModeNetworkViolation: policy=63 violation=4
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1123)
StrictMode 还一个更直观的使用方法,进入开发者选项中开启严格模式,在开启之后如果主线程中有执行时间长的操作,屏幕则会闪烁。
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。







评论