ANR

全称:

Application for Responding(应用程序无响应)

原因:

  • 当前的事件没有机会得到处理,例如UI线程正在响应另外一个事件,当前事件由于某种原因被阻塞了。
  • 当前的事件正在处理,但是由于耗时太长没能及时完成

ANR定位和分析:

可以通过结合Logcat日志和生成的位于手机内部存储的/data/anr/traces.txt文件进行分析和定位。

adb shell

cd data/anr

ls

此时可以查看到目录下所有的traces.txt 文件

通过(Ctrl +D )退出 adb shell

然后执行导出命令:adb pull /data/anr/traces.txt D:\traces\mytraces.txt

此处 D:\traces\mytraces.txt为导出目标位置。

ADB环境配置:

1.在环境变量-系统变量下新增:

变量名:android

变量值:D:\xyd\android-tools\android-sdk\platform-tools               (sdk下工具目录)

2.在path后面添加%android%;       若前面没;需要添加;

3.在命令行中输入adb有提示则配置成功

ANR的避免和检测

避免在主线程中作耗时操作。

检测工具:

StrictMode:严格模式StrictMode是Android SDK提供的一个用来检测代码中是否存在违规操作的工具类。主要检测两类问题:

线程策略ThreadPilicy,虚拟机策略VmPolicy。

BlockCanary:是一个非侵入式的性能监控函数库,用法和LeakCanary类似。只不过后者监控应用的内存泄漏,而BlockCanary监控应用主线程的卡顿。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值