ANR资料

全称:

Application not response(应用程序未响应)

原因:

  1. 用户输入事件在5秒内没有处理完,当再一次发生输入事件时产生ANR。

  2. 前台广播在10秒内没有处理完成或者后台广播在60秒内没有处理完成,则产生ANR。

  3. 前台服务在20秒内没有处理完成或者后台服务在200秒内没有处理完成则发生ANR。

  4. ContentProvider在10秒内没有处理完成发生ANR。

ANR定位和分析:

1、可以通过Logcat日志分析。

2、生成的位于手机内部存储的/data/anr/traces.txt文件进行分析和定位。(这个方法可能会碰到无权限问题)

adb shell

cd data/anr

ls

此时可以查看到目录下所有的traces.txt 文件(如果不确定生成的是哪个trace文件,可以通过adb shell ls -l /data/anr/查看,会带上文件时间)。

通过(Ctrl +D )退出 adb shell

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

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

3、adb bugreport D:\log通过此命令可将日志压缩打包导出到指定位置。解压后可打开查看日志。

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监控应用主线程的卡顿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值