随笔 - 262  文章 - 0  评论 - 5  阅读 - 20万

StrictMode

StrictMode严格模式,主要用来检测程序中违例情况的开发者工具。

最常用的场景就是检测主线程中本地磁盘、网络读写等耗时的操作以及Activity泄露等,但该模式不建议在Release版本开启,此外该模式无法监控JNI中的磁盘IO和网络请求且其违例情况仅供参考,需结合实际开发需求予以解决。

StrictMode做什么用的?

1.线程使用策略:ThreadPolicy

  • 自定义的耗时调用 使用 detectCustomSlowCalls() 开启
  • 磁盘读取操作 使用 detectDiskReads() 开启
  • 磁盘写入操作 使用 detectDiskWrites() 开启
  •  网络操作 使用 detectNetwork() 开启

2.内存(vm 虚拟机)使用策略:VmPolicy

  • Activity泄露 使用 detectActivityLeaks() 开启
  • 未关闭的Closable对象泄露 使用 detectLeakedClosableObjects() 开启
  • 泄露的Sqlite对象 使用 detectLeakedSqlLiteObjects() 开启
  • 检测实例数量 使用 setClassInstanceLimit() 开启

具休使用:

复制代码
 1 public class DebugUtil {
 2     public static void startStrictModeVmPolicy(){
 3         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
 4         .detectActivityLeaks()/*检测Activity内存泄露*/
 5         .detectLeakedClosableObjects()/*检测未关闭的Closable对象*/
 6         .detectLeakedSqlLiteObjects() /*检测Sqlite对象是否关闭*/   
 7         /*也可以采用detectAll()来检测所有想检测的东西*/
 8         .penaltyLog().build());
 9     }
10     public static void startStrictModeThreadPolicy(){
11         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
12         .detectDiskReads()/*磁盘读取操作检测*/
13         .detectDiskWrites()/*检测磁盘写入操作*/
14         .detectNetwork() /*检测网络操作*/   
15         /*也可以采用detectAll()来检测所有想检测的东西*/
16         .penaltyLog().build());
17 }
复制代码

 

如何使用

关于StrictMode如何使用,最重要的就是如何启用严格模式。

放在哪里

严格模式的开启可以放在Application或者Activity以及其他组件的onCreate方法。为了更好地分析应用中的问题,建议放在Application的onCreate方法中。

简单启用

直接在application oncreate 中调用开启

if (isDebug) {
DebugUtil.startStrictModeThreadPolicy();
DebugUtil.startStrictModeVmPolicy();
}
 

严格模式需要在debug模式开启,不要在release版本中启用。

 

posted on   wp7ers  阅读(257)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示