Android Studio StrictMode

Android Studio StrictMode最近接手一个新项目,研究下代码,并学习其中一些好的地方。比如今天发现运行app以后会有log显示 StrictMode相关信息,通过查看代码,我发现在某Activity中使用了StrictMode的一些功能,老实说,StrictMode我在手机的开发者选项中有见到过,enable以后用过几分钟……尝鲜,但是代码里面从来没用过这个功能,从来没用过    他主要是检测线程&虚拟

大家好,又见面了,我是你们的朋友全栈君。

最近接手一个新项目,研究下代码,并学习其中一些好的地方。比如今天发现运行app以后会有log 显示 StrictMode相关信息,通过查看代码,我发现在 某Activity 中使用了 StrictMode 的一些功能,老实说,StrictMode我在手机的开发者选项中有见到过,enable以后用过几分钟……尝鲜,但是代码里面从来没用过这个功能,从来没用过偷笑

        他主要是检测 线程&虚拟机  相关的违例情况,比如磁盘操作、网络访问等。详情阅读官方文档StrictMode

        我目前比较关心两件事:

        1.在什么时候用;

        2.怎么用。

        关于1,这个功能是协助开发者开发产品的时候给自己“找茬”的,适用于开发阶段使用,release版本不建议打开相关功能。可以设置一个boolean变量,根据这个变量的值来enable或disable  StrictMode。关于这个boolean值,在android studio的gradle中有个功能很有用,如下代码所示:

    buildTypes{
        releaseName{
            debuggable false
        }
        debugName{
            debuggable true
        }
    }

 在类中 可以通过读取相关值来确定当前是否是debug版本,并作出相应策略。ps:debuggable属性不是必须设置的,debug版本下其默认是true,release版本下,其默认是false

           

        关于2,主要是要搞懂监测规则的设置,android的规则不止一点,可由开发者自己决定StrictMode要监测的规则,可以仅仅检测网络相关,也可以检测所有规则。

        项目中是这么用的:在Activity 或者Application 的onCreate中调用相关功能。其一般是有两个set方法,分别对应  线程&vm 摘了一段代码如下所示:

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()  
    .detectDiskReads()  
    .detectDiskWrites()  
    .detectNetwork()  
    .penaltyLog()  
    .build());

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()  
    .detectLeakedSqlLiteObjects()  
    .penaltyLog()  
    .penaltyDeath()  
    .build()); 

 可以在android studio里面查看或者看官网的文档(sdk里面这个类挺长的,看得我好累啊)。其实这个StrictMode我之所以用得少,主要是因为项目的框架搭建完以后,线程方面不会出问题的,数据库相关操作也都封装好了,网络也是。而且现在各种开源库流行起来,开发者自己造轮子的机会不是很多,所以用的就少了,不过,存在即合理,了解一下还是有用的,也就几行代码的事,随手写出来测试下app找出问题也是极好的。

今天就是简单看了一下StrictMode.java,算上注释,一共2000+行,找时间我要再仔细看下。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132860.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • u盘无法格式化怎么办?5种方法完美解决_U盘无法格式化怎么办

    u盘无法格式化怎么办?5种方法完美解决_U盘无法格式化怎么办今年暑假买的U盘,16G,突然某一天发现它要跪掉了。每次插上电脑都要显示格式化,一点击”格式化却显示“无法完成格式化”。当时真的想把电脑和U盘一起砸掉。。。。。然后在网上找了很多自称很牛逼的低级格式化的软件,还是败北了。后来用了这个软件 ChipGenius4.0   (http://dl.pconline.com.cn/html_2/1/60/id=50720&pn=0&linkPage=1.h

    2025年10月13日
    1
  • 开机提示:DISK BOOT FAILURE,INSERT SYSTEM DISK AND PRESS ENTER无法开机的解决办法「建议收藏」

    开机提示:DISK BOOT FAILURE,INSERT SYSTEM DISK AND PRESS ENTER无法开机的解决办法「建议收藏」现实是悲催的,本人在公司不仅写Java/Android程序,又要管理公司的电脑。有新员工进来把电脑换了个主板,一开机提示DISKBOOTFAILURE,INSERTSYSTEMDISKANDPRESSENTER,明显是:“没有识别到硬盘”,在开机的日志显示:MenmoryRunsatFlexMemoryModeDetectingIDEdrives……

    2022年7月13日
    39
  • JAVA https双向验证案例,和生成keyStore文件的方法,https单向认证博文参考地址

    JAVA https双向验证案例,和生成keyStore文件的方法,https单向认证博文参考地址JAVA https双向验证案例,和生成keyStore文件的方法,https单向认证博文参考地址

    2022年4月23日
    35
  • 华为模拟器ensp命令_vmware命令大全

    华为模拟器ensp命令_vmware命令大全命令符从用户视图切换到系统视图system–view从系统视图切换到用户视图quit连入接口命令interfaceIP地址、子网掩码配置命令ipaddress接口IP信息查看命令displayipinterfacebriefIPv4路由表信息查询命令displayiprouting–table配置完成退回视图界面命令return命令自动补全快捷键【Tab】…

    2025年6月27日
    2
  • JavaScript中的document.cookie的使用

    JavaScript中的document.cookie的使用 我们已经知道,在document对象中有一个cookie属性。但是Cookie又是什么?“某些Web站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为Cookie。”——MSIE帮助。一般来说,Cookies是CGI或类似,比HTML高级的文件、程序等创建的,但是javascript也提供了对Cookies的很全面的访问权利。  我们先要学

    2022年7月27日
    7
  • response.setcontenttype详解

    response.setcontenttype详解Response.setContentType(MIME)的作用是时客户端的浏览器区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。MIME的作用:由于MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的MIME类型,服务器中必须定义文档后缀和MIME类型之间的对应关系。而客户程序从服务器上接收数据的时候,它只是从服务…

    2025年5月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号