有關android ANR

來源:互聯網
上載者:User

標籤:anr

ANR一般有三種類型:
1: KeyDispatchTimeout(5 seconds)
按鍵或觸摸事件在特定時間內無響應
2:BroadcastTimeout(10 seconds)
BroadcastReceiver在特定時間內無法處理完成
3: ServiceTimeout(20 seconds)

Service在特定的時間內無法處理完成



KeyDispatchTimeout
Akey or touch event was not dispatched within the specified time(按鍵或觸摸事件在特定時間內無響應)
具體的逾時時間的定義在framework下的
ActivityManagerService.java
//How long we wait until we timeout on key dispatching.
staticfinal int KEY_DISPATCHING_TIMEOUT = 5*1000
逾時時間的計數一般是從按鍵分發給app開始。逾時的原因一般有兩種
(1)當前的事件沒有機會得到處理(即UI線程正在處理前一個事件,沒有及時的完成或者looper被某種原因阻塞住了)
(2)當前的事件正在處理,但沒有及時完成
如何避免KeyDispatchTimeout
1:UI線程盡量只做跟UI相關的工作
2:耗時的工作(比如資料庫操作,I/O,串連網路或者別的有可能阻礙UI線程的操作)把它放入單獨的線程處理
3:盡量用Handler來處理UIthread和別的thread之間的互動

有關android ANR

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.