面试虽然很少人会问如果Android app 程序无响应以后,你如何判断问题的定位,但这个也很少人去关注,毕竟可能出现不多或者出现以后,在重试也就没有再现,就这样过了?但这样反而强调要掌握如何定位这种问题,这样才能展示技术水平,这个我们微信群里同学说,应粉丝要求,本章就带大家来了解和掌握这个技术。
ANR (Application Not Responding) 是程序无响应,是Android中错误的一个概念,当你在操作 App 时候或者快速操作会感觉界面卡顿,卡顿超过一定时间就会出现ARN 对话框。出现 ANR 主要是因为我们在主线程中做了太多耗时操作,这时你可以选择"等待"按钮,等待应用程序结束主线程的耗时操作,或者选择"确定"按钮,结束这个应用程序。常规的造成ANR主要有三个原因:
1.按键5s内没有响应;
2.广播10s无法处理完成;
3.服务20s内无法完成;
当出现ANR的时候,在部分手机路径/data/anr/的路径下会产生trace.txt 或者以anr+日期的文件,我们可以通过adb pull命令把文件拷贝出来,但存在问题,现在android 10的系统是无法通过pull命令把文件拷贝出来,会提示没有权限,那对针对这个问题要如何处理呢?可以用adb bugreport命令把所有日志拷贝出来,再进行定位。具体的项目案例以及问题定位,请查看视频:
(可以对本文章分享到朋友圈,然后获得10个赞,截图,然后戳这