ANR日志分析

一:前言

    最近发现好多人不会从日志中找到ANR的解决方法, 在此分享一个小技巧。    

    想必ANR(应用程序无响应)大家都遇到过,大概有以下情况会发生:  

              1. dispatchTimeout输入事件分发超时,一般是主线程在5秒之内没有响应事件

            2. BroadcastTimeout广播超时,一般为广播在10秒内未能执行完毕

            3. ServiceTimeout服务超时,一般为服务在20秒内未能执行完毕。

    其实无非就是不要在主线程中做耗时操作,比如:网络请求,数据库操作什么的,写代码的时候注意一下就可以大大的避免ANR发生。

二:输出日志

    如果在发生ANR时手机没有连接着AS的话, 可以用这种办法取到ANR日志,技巧如下:

        1. 打开CMD小黑框,进入到Android SDK 目录下的platform-tools文件夹下面直接输出 : adb logcat (不会进的自行百度) 复制粘贴到一个txt文本下,方便稍后查看。

        2. 执行adb pull /data/anr/traces.txt  D:\traces.txt 输出traces日志。

三:分析日志

        1. 先看logcat输出的日志

ANR日志分析_第1张图片

查看未果,不要浪费时间, 我们接着看trace 日志, 看看能不能找到答案。

ANR日志分析_第2张图片

四:总结

    其实anr并不难解决,通过分析日志基本就可以找到答案,如果你也遇到了anr那么尝试用这种办法解决试试, 看看能不能解决你的问题, 最主要的还是在写代码的时候多加注意,主线程只做刷新Ui的操作, 把一切耗时的操作都放在子线程里去完成,尽量从根源上避免ANR发生, 最后在这祝大家: 事业顺利,上线无BUG!

你可能感兴趣的:(bug记录)