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:\traces.txt 輸出traces日志。

三:分析日志

        1. 先看logcat輸出的日志

查看未果,不要浪費時間, 我們接着看trace 日志, 看看能不能找到答案。

四:總結

    其實anr並不難解決,通過分析日志基本就可以找到答案,如果你也遇到了anr那么嘗試用這種辦法解決試試, 看看能不能解決你的問題, 最主要的還是在寫代碼的時候多加注意,主線程只做刷新Ui的操作, 把一切耗時的操作都放在子線程里去完成,盡量從根源上避免ANR發生, 最后在這祝大家: 事業順利,上線無BUG!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM