Android避免ANR之StrictMode

   从Android 2.3开始提供了一个新的类名为StrictMode可以帮助开发者改进你的Android应用,StrictMode可以捕捉到在UI主线程中的I/O操作或者网络操作, 给出这些操作的耗时供开发者参考, 开发者可以将一些耗时的操作移到worker thread中去做, 减少ANR发生的概率.

   使用方式如下, 一般将这段代码放到activityonCreate()函数中, 尽可能的提早执行这段代码已发现耗时的操作。

 public void onCreate() {
         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                 .detectDiskReads()
                 .detectDiskWrites()
                 .detectNetwork()   // or .detectAll() for all detectable problems
                 .penaltyLog()
                 .build());
         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                 .detectLeakedSqlLiteObjects()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());
     super.onCreate();
 }

之后查看log, 会有如下的输出:


通过这个调用栈可以清晰的看到操作的类型:writeToDisk(写操作), 以及调用的位置据此就可以对代码结构做出一定的调整,比如优化代码或者将耗时操作移到子线程中去做。

      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值