(轉(zhuǎn))Android 系統(tǒng)穩(wěn)定性 - ANR

轉(zhuǎn)自:http://rayleeya.iteye.com/blog/1955652

如果你是一個Android應用程序開發(fā)人員,你的人生中不可避免的三件事情是:死亡擂找、繳稅和ANR。這么說是夸張了贯涎,但是由于Android本身的設(shè)計,以及應用程序和系統(tǒng)在開發(fā)過程中的缺陷陆盘,經(jīng)常會在測試過程中遇到各種各樣的ANR問題败明。在功能性的測試中還少一些,主要是在壓力測試中(例如Monkey測試)會遇到非常多的ANR問題妻顶。本章的目的就是匯總筆者在工作中遇到的各種ANR問題,將其歸納總結(jié)出一套分析和處理ANR問題的方法幔嗦,希望能夠通過這套方法為大家提供思路沥潭,有效的減少大家處理ANR問題的時間。同時也會給出一些避免ANR的最佳實踐汇恤,更多的從預防做起,更少的做事后補救屁置。

考慮到看本文的讀者大多是有實際經(jīng)驗的開發(fā)人員,我會盡量少的提到一些基礎(chǔ)的概念阱穗,我也希望給大家更多的“干貨”使鹅。

本章的主要內(nèi)容如下:

  • ANR簡介(什么是ANR、為什么會有ANR鲁僚、ANR的異常長什么樣)
  • 如何分析ANR(引起ANR的原因分類裁厅、分析ANR的利器)
  • 實例講解
  • 避免ANR的最佳實踐(從錯誤中吸取教訓)

ANR簡介
ANR是“Application Not Responding”的縮寫,即“應用程序無響應”执虹。在Android中,ActivityManagerService(簡稱AMS)和WindowManagerService(簡稱WMS)會監(jiān)測應用程序的響應時間侥啤,如果應用程序主線程(即UI線程)在超時時間內(nèi)對輸入事件沒有處理完畢茬故,或者對特定操作沒有執(zhí)行完畢,就會出現(xiàn)ANR磺芭。對于輸入事件沒有處理完畢產(chǎn)生的ANR赁炎,Android會顯示一個對話框甘邀,提示用戶當前應用程序沒有響應垮庐,用戶可以選擇繼續(xù)等待或者關(guān)閉這個應用程序(也就是殺掉這個應用程序的進程)哨查。

為什么會有ANR
如上所述,ANR的產(chǎn)生需要同時滿足三個條件:

  • 主線程:只有應用程序進程的主線程響應超時才會產(chǎn)生ANR寒亥。
  • 超時時間:產(chǎn)生ANR的上下文不同,超時時間也會不同溉奕,但只要在這個時間上限內(nèi)沒有響應就會ANR。
  • 輸入事件/特定操作:輸入事件是指按鍵仙辟、觸屏等設(shè)備輸入事件,特定操作是指BroadcastReceiver和Service的生命周期中的各個函數(shù)叠国,產(chǎn)生ANR的上下文不同戴尸,導致ANR的原因也會不同。

針對這三個條件项棠,有以下三種情況會觸發(fā)ANR,詳細說明如下香追。

主線程對輸入事件在5秒內(nèi)沒有處理完畢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翅阵,一起剝皮案震驚了整個濱河市迁央,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岖圈,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顽决,死亡現(xiàn)場離奇詭異导匣,居然都是意外死亡,警方通過查閱死者的電腦和手機赋访,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門蚓耽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人步悠,你說我怎么就攤上這事〈鹄眩” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵踢涌,是天一觀的道長睁壁。 經(jīng)常有香客問我,道長潘明,這世上最難降的妖魔是什么秕噪? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮遂填,結(jié)果婚禮上澈蝙,老公的妹妹穿的比我還像新娘灯荧。我一直安慰自己,他們只是感情好逗载,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挚躯,像睡著了一般擦秽。 火紅的嫁衣襯著肌膚如雪食侮。 梳的紋絲不亂的頭發(fā)上目胡,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天誉己,我揣著相機與錄音域蜗,去河邊找鬼。 笑死霉祸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慢宗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼镜沽,長吁一口氣:“原來是場噩夢啊……” “哼缅茉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蔬墩,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拇颅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蔬蕊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡岸夯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年猜扮,在試婚紗的時候發(fā)現(xiàn)自己被綠了监婶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齿桃。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡短纵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出香到,到底是詐尸還是另有隱情,我是刑警寧澤悠就,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布梗脾,位于F島的核電站,受9級特大地震影響炸茧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宇立,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一自赔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绍妨,春花似錦、人聲如沸他去。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽媳搪。三九已至,卻和暖如春秦爆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背等限。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工芬膝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锰霜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓锈遥,卻偏偏與公主長得像勘畔,于是被迫代替她去往敵國和親丽惶。 傳聞我的和親對象是個殘疾皇子炫七,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,297評論 25 707
  • java 接口的意義-百度 規(guī)范、擴展抡秆、回調(diào) 抽象類的意義-樂視 為其子類提供一個公共的類型封裝子類中得重復內(nèi)容定...
    交流電1582閱讀 2,242評論 0 11
  • 昨夜在雪中詩意綿綿 早晨踩著油門 以五公里每小時的時速 漂移在路上 一句詩也寫不出來 只慶幸自己腿不短 靴子也夠長...
    李榆閱讀 323評論 31 6
  • 在寢室儒士,總有這種感覺。真是不好意思的意思着撩。 嘶啞的音樂就像到了劣質(zhì)酒吧,幾個月都沒收益的那種拖叙,更本就不知道如何。 ...
    蜜呢閱讀 251評論 0 0