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 还一个更直观的使用方法,进入开发者选项中开启严格模式,在开启之后如果主线程中有执行时间长的操作,屏幕则会闪烁。
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论