在andorid开发过程中有时候会用到StrictMode进行相关操作,可以用来帮助开发者发现代码中的一些不规范的问题,以达到提升应用响应能力的目的
StrictMode分为以下两种策略:
1. 线程监控策略
2.VM虚拟机监控策略
ThreadPolicy线程策略检测
- 线程策略检测的内容有
- 自定义的耗时调用 使用detectCustomSlowCalls()开启
- 磁盘读取操作 使用detectDiskReads()开启
- 磁盘写入操作 使用detectDiskWrites()开启
- 网络操作 使用detectNetwork()开启
VmPolicy虚拟机策略检测
- Activity泄露 使用detectActivityLeaks()开启
- 未关闭的Closable对象泄露 使用detectLeakedClosableObjects()开启
- 泄露的Sqlite对象 使用detectLeakedSqlLiteObjects()开启
- 检测实例数量 使用setClassInstanceLimit()开启
使用penaltyDeath()的话,一旦StrictMode消息被写到LogCat后会导致应用崩溃。
StrictMode
.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites()
.detectCustomSlowCalls().detectNetwork()
// .penaltyDialog() // 弹出违规提示对话框
.penaltyLog() // 在Logcat 中打印违规异常信息
.penaltyFlashScreen().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().detectAll().penaltyLog()
//.penaltyDeath() //一旦penaltyLog执行,直接导致程序崩溃
.build());
随笔写StrictMode相关内容,Logcat所报错误如何解决网上有很多资源,本人也在学习当中,写下本文供大家参考,有好意见欢迎交流。