快速简单处理anr

简单处理anr的流程

1.首先应用发生anr的情况有如下几种:

  • Service中各生命周期函数执行超过20s。

  • BroadcastReceiver的onReceiver()超过10s;

  • 用户的输入在5s内没被App响应;

    上面信息来自

遇到anr我们的姿势应该是什么样子呢?

1.首先我们需要导出anr的日志,anr问题的log一般都在/data/anr/目录下,所以我们输入如下adb 命令:

adb pull /data/anr/traces.txt   d:/  导出到d盘

导出后的文件大约是这样子的:

----- pid 2677 at 2017-07-21 17:38:10 -----  //发生的日期
Cmd line: cn.xxx.xxx //哪个应用
"main" prio=5 tid=1 NATIVE  //找这个下面的那段日志
at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
  at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:555)
  at android.database.sqlite.SQLiteSession.endTransactionUnchecked(SQLiteSession.java:437)
  at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:401)
  at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:522) 。。。。//这后面应该会有相关的信息,会提示到具体的类和方法

到了这里基本上已经定位到问题的所在了,然后就是去项目里找具体问题了。

总结

一般无响应都是UI线程中做了耗时操作,不过由于以前的机器性能还没那么好,所以会出现较多的anr,现在机器性能比较好,一般不会出现,如果出现了也不要担心,多数是把问题代码放到线程中就好了,如有问题欢迎反馈,谢谢!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值