严苛模式(StrictMode)

Android 2.3起,新增加了一个类,叫StrictMode(android.os.StrictMode)。这个类可以用来帮助开发者改进他们编写的应用,并且提供了各种的策略,这些策略能随时检查和报告开发者开发应用中存在的问题。常用的监控方面的策略有如下这些:
  Disk Reads 磁盘读
  Disk Writes 磁盘写
  Network access 网络访问
  Custom Slow Code 自定义的运行速度慢的代码分析
目前主流的是针对主线程(或UI线程),将违规操作写入logcat。其做法是在Application的onCreat()中设置严苛模式(StrictMode):

  private void initStrictMode() {
        if (BuildConfig.DEBUG) {
            StrictMode.setThreadPolicy(
                    new StrictMode.ThreadPolicy.Builder()//线程策略
                            .detectAll()
//                            .penaltyDialog() // 弹出违规提示对话框
                            .penaltyLog() // 在logcat中打印违规异常信息
                            .build());
            StrictMode.setVmPolicy(
                    new StrictMode.VmPolicy.Builder()//虚拟机策略
                            .detectAll()
                            .penaltyLog()
                            .build());
        }
    }

如代码中的注释penaltyDialog()为弹出提示对话框,penaltyLog()为在logcat中打印出来,打印信息在debug级别,大众做法为设置一个debug变量,使其只有在debug时进行策略检查,发布时改变变量(此变量用处挺多的,相信每个项目都会有,比如log封装类,在开发阶段为了方便会记录很多log信息,而我则会闷头敲代码,到发布时不可能再去一个一个排查,所以有个Mylog.init(boolean)会方便很多,当然有人打个log测完就删除了)。
了解了StrictMode就会发现,当检测到违规操作时,如果是打印到logcat,那就意味着如果我不搭理这个信息,那我就可以做这些操作,比如说:大家都知道,Android是不允许在主线程做耗时操作的,但你加上StrictMode的ThreadPolicy之后,你会惊奇的发现,你可以在主线程做任何事,访问网络等,所以如果有特殊要求要在主线程做耗时操作,可以考虑这个方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值