ANR 分析概述

參考列表:

https://blog.csdn.net/abm1993/article/details/80455032

https://blog.csdn.net/h1130189083/article/details/78147189

一、ANR 定義及分類

??????? ANR(Application Not Responding):應(yīng)用程序無響應(yīng),是 Android 中 AMS 與 WMS 監(jiān)控應(yīng)用相應(yīng)超時時的反應(yīng)。ANR 發(fā)生在 UI 線程轻庆,與四大組件對應(yīng)犹赖,在調(diào)用生命周期函數(shù)超時時發(fā)生袍患,分為以下四類:

1瓣蛀、KeyDispatchTimeout(5 秒)

按鍵或觸屏事件,5秒鐘之內(nèi)沒有得到執(zhí)行寇窑,當(dāng)設(shè)置中開啟ANR彈窗時,默認(rèn)情況下箩张,當(dāng)有事件派發(fā)時甩骏,才會觸發(fā)彈窗ANR。

ANR 日志中出現(xiàn)的關(guān)鍵字:Reason: Input dispatching timed out xxxx

2先慷、BroadcastTimeout(前臺廣播 10 秒饮笛;后臺廣播 60 秒)

BroadcastReceiver 在特定時間內(nèi),onReceiver() 方法沒有處理完成论熙,設(shè)置中開啟ANR彈窗時福青,默認(rèn)情況下,無彈窗赴肚,有l(wèi)og素跺。設(shè)置前臺廣播時需要加上FLAG_RECEIVER_FOREGROUND 標(biāo)識

ANR 日志中出現(xiàn)的關(guān)鍵字:Timeout executing service:/executing service XXX

3、ServiceTimeout(前臺服務(wù) 20 秒誉券;后臺服務(wù) 200 秒)

Service 在特定事件內(nèi)沒有處理完成指厌,設(shè)置中開啟ANR彈窗時,默認(rèn)情況下踊跟,無彈窗踩验,有l(wèi)og。

ANR 日志中出現(xiàn)的關(guān)鍵字:Timeout of broadcast XXX/Receiver during timeout:XXX/Broadcast of XXX

4商玫、ContentProviderTimeout(10 秒)

ContentProvider 的 publish 在 10 秒內(nèi)箕憾,沒有執(zhí)行完。

ANR 日志中出現(xiàn)的關(guān)鍵字:timeout publishing content providers

二拳昌、原因歸納

(1)其他進程占用CPU導(dǎo)致本進程得不到CUP時間片袭异,例如其他進程頻繁讀寫;

(2)耗時網(wǎng)絡(luò)請求炬藤;

(3)當(dāng)有大量數(shù)據(jù)正在讀寫操作時御铃,主線程再請求讀寫操作碴里,容易發(fā)生;

(4)數(shù)據(jù)庫操作(比如其他大數(shù)據(jù)量應(yīng)用訪問數(shù)據(jù)庫導(dǎo)致數(shù)據(jù)庫負(fù)載過重時)上真;

(5)硬件操作(Camera)咬腋;

(6)調(diào)用 Thread 的 join() 、sleep()睡互、wait() 方法根竿,或者等待線程鎖的時候;

(7)Service binder 的數(shù)量達到上限就珠;

(8)service 忙導(dǎo)致超時未響應(yīng)寇壳;

(9)在 system_server 中發(fā)生 WatchDog 的時候

(10)初始化的控件和數(shù)據(jù)過多

(11)內(nèi)存不足導(dǎo)致 block 在創(chuàng)建 bitmap 上

(12)其他線程有鎖,導(dǎo)致主線程等待超時嗓违;

(13)其他線程終止或者崩潰導(dǎo)致主線程超時九巡;

三、日志分析思路概要

1蹂季、在 log 日志中搜索關(guān)鍵字:am_anr冕广、InputDispatcher

(1)am_anr:通用的 ANR 第一時間點的 Log,Input 超時的時候可能會有延遲偿洁。

(2)InputDispatcher:當(dāng)有 input 超時的時候撒汉,該 Log? 打印時間點是 ANR 第一發(fā)生的時間點。

2涕滋、相關(guān)日志主要包含兩個:am_anr log睬辐、trace 文件

(1)am_anr 日志是由 (User|1|5)、(pid|1|5)宾肺、(Package Name|3)溯饵、(Flags|1|5)、(reason|3) 組成的锨用,我們根據(jù) reason 去分類 ANR 類型丰刊,然后根據(jù)不同的類型,以 am_anr 作為起始點往回看增拥,主要關(guān)注 timeout 時間內(nèi)啄巧,我們的應(yīng)用或者系統(tǒng)在做什么?

(2)trace 文件一般存在 data\anr 目錄掌栅,這里記錄了 ANR 發(fā)生時秩仆,應(yīng)用各個線程的調(diào)用堆棧信息,trace 文件也是分析 ANR 問題的關(guān)鍵猾封,但并不一定是絕對的準(zhǔn)確澄耍,trace 文件只是收集 ANR 發(fā)生時某一刻的調(diào)用堆棧信息。某一時刻請自行體會,多看一點ANR問題齐莲,便能體會卿城。(此處我也在體會中.......)

四、避免 ANR

(1)避免主線程執(zhí)行耗時操作铅搓。請注意 Handler ,是否使用的是主線程下的(異步處理操作搀捷,操作仍在 UI 主線程星掰,因為使用的是主線程的 Loop 和 Messagequeue),非主線程請使用 HandlerThread 嫩舟;

(2)BoardcastReceiver 要執(zhí)行耗時操作時應(yīng)啟動一個 Service,將耗時操作交給 Service 完成。

(3)避免在IntentReceiver里啟動一個Activity鄙皇,因為它會創(chuàng)建一個新的畫面褐奥,并從用戶當(dāng)前運行的程序上搶奪焦點。如果應(yīng)用需要在收到廣播時打開 Activity饭于,應(yīng)該使用 Notification Manager 實現(xiàn)蜀踏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市掰吕,隨后出現(xiàn)的幾起案子果覆,更是在濱河造成了極大的恐慌,老刑警劉巖殖熟,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件局待,死亡現(xiàn)場離奇詭異,居然都是意外死亡菱属,警方通過查閱死者的電腦和手機钳榨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纽门,“玉大人薛耻,你說我怎么就攤上這事∧せ伲” “怎么了昭卓?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瘟滨。 經(jīng)常有香客問我候醒,道長,這世上最難降的妖魔是什么杂瘸? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任倒淫,我火速辦了婚禮,結(jié)果婚禮上败玉,老公的妹妹穿的比我還像新娘敌土。我一直安慰自己镜硕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布返干。 她就那樣靜靜地躺著兴枯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矩欠。 梳的紋絲不亂的頭發(fā)上财剖,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音癌淮,去河邊找鬼躺坟。 笑死,一個胖子當(dāng)著我的面吹牛乳蓄,可吹牛的內(nèi)容都是我干的咪橙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼虚倒,長吁一口氣:“原來是場噩夢啊……” “哼美侦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起魂奥,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤音榜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捧弃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赠叼,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年违霞,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘴办。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡买鸽,死狀恐怖涧郊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眼五,我是刑警寧澤妆艘,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站看幼,受9級特大地震影響批旺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诵姜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一汽煮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦暇赤、人聲如沸心例。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽止后。三九已至,卻和暖如春溜腐,著一層夾襖步出監(jiān)牢的瞬間坯门,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工逗扒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欠橘。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓矩肩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肃续。 傳聞我的和親對象是個殘疾皇子黍檩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354