ANR日誌分析

 

版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接和本聲明。
本文連接: https://blog.csdn.net/z_Xiaozuo/article/details/80829316

一:前言html

    最近發現好多人不會從日誌中找到ANR的解決方法, 在此分享一個小技巧。    數據庫

    想必ANR(應用程序無響應)你們都遇到過,大概有如下狀況會發生:  網絡

              1. dispatchTimeout輸入事件分發超時,通常是主線程在5秒以內沒有響應事件。spa

            2. BroadcastTimeout廣播超時,通常爲廣播在10秒內未能執行完畢。.net

            3. ServiceTimeout服務超時,通常爲服務在20秒內未能執行完畢。線程

    其實無非就是不要在主線程中作耗時操做,好比:網絡請求,數據庫操做什麼的,寫代碼的時候注意一下就能夠大大的避免ANR發生。日誌

二:輸出日誌code

    若是在發生ANR時手機沒有鏈接着AS的話, 能夠用這種辦法取到ANR日誌,技巧以下:orm

        1. 打開CMD小黑框,進入到Android SDK 目錄下的platform-tools文件夾下面直接輸出 : adb logcat (不會進的自行百度) 複製粘貼到一個txt文本下,方便稍後查看。htm

        2. 執行adb pull /data/anr/traces.txt  D:\traces.txt 輸出traces日誌。

三:分析日誌

        1. 先看logcat輸出的日誌

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

四:總結

    其實anr並不難解決,經過分析日誌基本就能夠找到答案,若是你也遇到了anr那麼嘗試用這種辦法解決試試, 看看能不能解決你的問題, 最主要的仍是在寫代碼的時候多加註意,主線程只作刷新Ui的操做, 把一切耗時的操做都放在子線程裏去完成,儘可能從根源上避免ANR發生, 最後在這祝你們: 事業順利,上線無BUG!

相關文章
相關標籤/搜索