android ANR

ANR:Application Not Responding,即应用无响应

ANR一般有三种类型:

1. KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应  ( Input event ANR 5sed)

2. BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成 (BroadCastReceiver ANR 10 sed)

3. ServiceTimeout(20 seconds) --小概率类型 Service在特定的时间内无法处理完成 (Service ANR 20 sed)

具体的超时时间的定义在framework下的 ActivityManagerService.Java

anr 是否可以抓取到 log文件?

/data/anr/traces.txt

shell@heroqltechn:/data/anr $ ls -al
-rw-rw-rw- system   system     616397 2016-12-10 18:01 traces.txt
-rw-rw-rw- root     root       113061 2016-12-08 10:51 traces.txt.bugreport

这是一个没有root过的手机,从权限上看traces.txt 是可以访问的。使用adb pull 取出anr数据

peterdeMacBook-Pro:~ peter$ adb pull /data/anr/traces.txt ~/Desktop/
[100%] /data/anr/traces.txt

分析anr

1. CPU的使用情况,如果CPU使用量接近100%,说明当前设备很忙,有可能是CPU饥饿导致了ANR

2. 如果CPU使用量很少,说明主线程被BLOCK了

3. 如果IOwait很高,说明ANR有可能是主线程在进行I/O操作造成的




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值