ANR日志分析

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z_Xiaozuo/article/details/80829316

一:前言

    最近发现好多人不会从日志中找到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: races.txt 输出traces日志。

三:分析日志

        1. 先看logcat输出的日志

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

四:总结

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

原文地址:https://www.cnblogs.com/xgjblog/p/11464776.html