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)
上一篇 2022年5月1日 上午10:40
下一篇 2022年5月1日 上午10:40


相关推荐

  • SQL中连接(JOIN)子句介绍

    SQL中连接(JOIN)子句介绍本文主要介绍 SQL StructuredQu 中连接 JOIN 子句的相关知识 同时通过用法示例介绍连接的常见用法 说明 本文的用法示例是面向 MySQL 数据库的 1 概述 SQL 中 JOIN 子句用于把来自两个或多个表的行结合起来 在实际的数据库应用中 经常需要从多个数据表中读取数据 这时就可以使用 SQL 语句中的连接 JOIN 子句 在两个或多个数据表中查询数据 JOIN 的用法按照功能划分 可分为如下三类 INNERJOIN 内连接 或等值连接

    2026年3月19日
    2
  • 推荐一款颜值逆天且功能齐全的开源Shell工具

    推荐一款颜值逆天且功能齐全的开源Shell工具前言以前在 windows 上一直使用的 SSH 工具是 XShell 后来转到 mac 平台 XShell 没有 mac 版本 所以之前一直在找一款颜值高 功能齐全的可以作为日常使用的 Shell 工具 我知道 mac 下也有不少优秀的 Shell 终端工具 比如 SecureCRT putty Termius FinalShell 等 我是从以下几个维度考虑的 颜值要高 毕竟天天面对本就枯燥乏味的 shell 命令行 界面不好看会影响心情 心情也是生产力要素中很重要的一个因素 不知道你们认同么 功能要全 什么文件上传 云端同步 主题

    2026年3月19日
    2
  • 手把手教你做一个安卓点餐系统

    手把手教你做一个安卓点餐系统撸一个安卓系统……

    2022年6月19日
    34
  • 用flash做古诗动画_Flash制作跟我学 用遮罩技术制作古诗动画-FLASH课件制作(FLASH课件制作教程)-flash课件吧(湖北金鹰)…

    用flash做古诗动画_Flash制作跟我学 用遮罩技术制作古诗动画-FLASH课件制作(FLASH课件制作教程)-flash课件吧(湖北金鹰)…Flash制作跟我学用遮罩技术制作古诗动画提示:遮罩—使用遮罩图层可以让Flash设计者有选择地显示图层的某些部分,应用遮罩需要创建一个图层成为遮罩的图层,而它下面的图层即成为被遮盖的图层。1准备一幅配合诗词意境的图片作为背景(古色古香的水墨画当属首选),根据图片的尺寸设计Flash文件的大小(本文创建尺寸为333×438像素,背景为蓝色)。打开“文件”菜单,选择“导入”→“导入到舞台”命令把背…

    2022年5月1日
    40
  • 如何快速查看颜色十六进制

    如何快速查看颜色十六进制1 Ctrl Alt A2 Ctrl C

    2026年3月18日
    5
  • oracle模糊匹配优化,Oracle 模糊查询 优化

    oracle模糊匹配优化,Oracle 模糊查询 优化1 字段 like 关键字 字段包含 关键字 的记录即使在目标字段建立索引也不会走索引 速度最慢 2 字段 like 关键字 字段以 关键字 开始的记录可以使用到在目标字段建立的升序索引 3 字段 like 关键字 字段以 关键字 结束的记录可以使用到目标字段建立的降序索引对于无法使用索引的 关键字 模式 有没有办法优化

    2026年3月16日
    1

发表回复

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

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