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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • <input type=”file” />浏览时只显示指定文件类型

    <input type=”file” />浏览时只显示指定文件类型浏览时只显示指定文件类型inputtype=”file”accept=”application/msword”>br>br>accept属性列表br>1.accept=”application/msexcel”2.accept=”application/msword”3.accept=”application/pdf”4.accept=”application/pos

    2022年7月16日
  • 笔记本(无线网卡)配置虚拟机上网

    笔记本(无线网卡)配置虚拟机上网当我们安装了virtualbox或者VMware虚拟机,都会虚出一个虚拟网卡。如果我们使用的是网线上网,那么可以选择“网桥”的方式让虚拟机上网,这样可以保证虚拟机和主机之间互通,而且虚拟机也可以访问外网。这时,虚拟机可以使用dhcp也可以手工的方式指定ip。那么,如果笔记本使用的是无线网卡上网,那么就无法使用“网桥”的方式配置虚拟机上网了。这时,可以使用host-only的配置方式,同

    2022年5月19日
  • 串口通信-MSComm控件使用详解

    串口通信-MSComm控件使用详解MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 MicrosoftCommunicationsControl(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通…

    2022年10月30日
  • Python 支付宝转账到银行卡二维码制作步骤分享[通俗易懂]

    Python 支付宝转账到银行卡二维码制作步骤分享[通俗易懂]PS:最近有需求需要根据信息自动生成支付宝转账二维码,实现功能支付宝扫码后信息自动输入。谷歌百度知乎各种搜索教程一大堆没有一个能成功实现(有可能是我流程不对),大致的流程为一下三步:根据url生成链接url转短链短链生成二维码PS:根据此教程做出的二维码扫码会提示违规,不能实现预定目标经多次测试总结出以下流程:转账URL地址拼接:~~alipays://pl…

    2022年9月5日
  • 极限思想之芝诺悖论[通俗易懂]

    极限思想之芝诺悖论[通俗易懂]芝诺悖论是古希腊哲学家芝诺提出的一组悖论。芝诺是一个很有学问,同时也很好玩的人(淘气)。他如果在中国出生,估计很难大学毕业,只能跟池子(脱口秀演员~)一样,高中教室门外面站三年课,然后去讲脱口秀糊口。阿基里斯,大家都知道。古希腊神话中的战神。无论是力量,速度,耐力,格斗技巧,都是巅峰级别的。一夜睡三女,第二天依然可以血染特洛伊的男人。芝诺就提出:在跑步比赛中,如果跑得最慢的乌龟一开始领先…

    2022年6月18日
  • 2022保密教育线上培训考试题答案_最新保密法考试题及答案

    2022保密教育线上培训考试题答案_最新保密法考试题及答案卷4单选题1.下列关于涉密计算机使用的说法正确的是()。正确答案:D.涉密计算机及时安装和升级专业“木马”查杀工具2.涉密打印机与涉密计算机之间()。正确答案:D.不能采用无线连接方式3.下列说法正确的是()。正确答案:D.淘汰、报废涉密计算机时应将涉密计算机经过专业消磁处理4.定密责任人在职责范围内承担有关国家秘密()工作。正确答案:D.以上都正确5.涉密人员是指在()、涉及国家秘密的单位涉密岗位工作的人员。正确答案:D.以上都正确6.下列关于预防和查杀“木马

    2022年10月1日

发表回复

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

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