zoukankan      html  css  js  c++  java
  • 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版本中启用。

  • 相关阅读:
    Python 之nmap模块问题解决
    phpstudy --mysql支持外联。
    Kali 更新
    Win 10 访问IPV6地址 问题。
    Macbookpro 使用Parallels Deskop安装kali Parallels Tools
    Windows 转 Mac 利用git继续管理github
    shell脚本移植问题(windwos移植到linux)
    APP测试项总结
    apktool 反编译
    微信小程序-服务器返回数据中包含有 换行符失效问题解决方案
  • 原文地址:https://www.cnblogs.com/mamamia/p/7866020.html
Copyright © 2011-2022 走看看