Android ANR分析總結(jié)

ANR的類型

  1. KeyDispatchTimeout(5 seconds) --主要類型按鍵或觸摸事件在特定時(shí)間內(nèi)無(wú)響應(yīng)
  2. BroadcastTimeout(10 seconds) --BroadcastReceiver在特定時(shí)間內(nèi)無(wú)法處理完成
  3. ServiceTimeout(20 seconds) --小概率類型 Service在特定的時(shí)間內(nèi)無(wú)法處理完成
  • Service ANR,前臺(tái)進(jìn)程中Service生命周期不能超過(guò)20秒,后臺(tái)進(jìn)程中Service的生命周期不能超過(guò)200秒。 在啟動(dòng)Service時(shí),拋出定時(shí)消息SERVICE_TIMEOUT_MSG或SERVICE_BACKGOURND_TIMEOUT_MSG,如果定時(shí)消息響應(yīng)了,則說(shuō)明發(fā)生了ANR
  • Broadcast ANR,前臺(tái)的“串行廣播消息”必須在10秒內(nèi)處理完畢,后臺(tái)的“串行廣播消息”必須在60秒處理完畢, 每派發(fā)串行廣播消息到一個(gè)接收器時(shí),都會(huì)拋出一個(gè)定時(shí)消息BROADCAST_TIMEOUT_MSG,如果定時(shí)消息響應(yīng),則判斷是否廣播消息處理超時(shí),超時(shí)就說(shuō)明發(fā)生了ANR
  • Input ANR,輸入事件必須在5秒內(nèi)處理完畢。在派發(fā)一個(gè)輸入事件時(shí),會(huì)判斷當(dāng)前輸入事件是否需要等待,如果需要等待,則判斷是否等待已經(jīng)超時(shí),超時(shí)就說(shuō)明發(fā)生了ANR

詳見(jiàn)ANR機(jī)制及問(wèn)題分析

如何分析ANR

需要經(jīng)過(guò)日志獲取、問(wèn)題定位和場(chǎng)景還原三個(gè)步驟。

  1. 分析Log。
    從LOG可以看出ANR的類型,CPU的使用情況,如果CPU使用量接近100%,說(shuō)明當(dāng)前設(shè)備很忙,有可能是CPU饑餓導(dǎo)致了ANR,如果CPU使用量很少,說(shuō)明主線程被BLOCK了,如果IOwait很高,說(shuō)明ANR有可能是主線程在進(jìn)行I/O操作造成的。
  1. 從trace.txt查看stack調(diào)用情況。
  2. 看代碼
  3. 仔細(xì)查看ANR的成因(iowait?block?memoryleak?)

詳見(jiàn)[[轉(zhuǎn)]Android ANR 分析解決方法]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是ANR ANR(Application Not Responding)就是應(yīng)用在規(guī)定的時(shí)間內(nèi)沒(méi)有響應(yīng)用戶輸入...
    lbtrace閱讀 3,538評(píng)論 3 9
  • 一、ANR說(shuō)明和原因 1.1 簡(jiǎn)介 ANR全稱:Application Not Responding,也就是應(yīng)用程...
    Marker_Sky閱讀 102,889評(píng)論 6 117
  • 在實(shí)際情況中,當(dāng)Android項(xiàng)目的用戶量特別大時(shí)候,一些細(xì)小的問(wèn)題也會(huì)被放大,ANR問(wèn)題就是一個(gè)典型的例子。一些...
    Uprising閱讀 54,334評(píng)論 4 116
  • 本文將從介紹什么是ANR,給出anr產(chǎn)生的幾種觸發(fā)點(diǎn),分析這幾種情況下是怎么產(chǎn)生anr的,然后給出優(yōu)化的方法這幾個(gè)...
    田間小鹿閱讀 946評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,535評(píng)論 19 139

友情鏈接更多精彩內(nèi)容