Android ANR發生緣由總結(zhuan)

  

ANR(Application Not Responding) Android系統中應用無響應數據庫

是Android系統中比較常見的問題,當出現ANR時通常狀況會彈出一個帶有如下文字的對話框提示:網絡

Activity XXX(in XXXXX) is not responding. 好比:大數據

粗略的來分會有兩種狀況致使ANR:spa

第一類:dispatchTimeout 輸入事件分發超時,通常是因爲主線程在5秒以內沒有響應輸入事件。線程

第二類:BroadcastReceiver沒有在系統設定的時間內完成並返回。server

再細分的話ANR多是由主線程致使也多是由非主線程致使:事件

因爲主線程致使的狀況:it

1.耗時網絡訪問io

2.當有大量數據讀寫操做時再請求數據讀寫ast

3.數據庫操做(好比其餘大數據量應用訪問數據庫致使數據庫負載太重時)

4.硬件操做(好比Camera)

5.調用thread_join() / Sleep() / Wait() 或者等待locker的時候

6.Service binder數量達到上限

7.在system_server中發生WatchDog ANR

8.Service忙致使超時無響應

因爲非主線程致使的狀況:

1.非主線程持有lock,致使主線程等待lock超時

2.非主線程終止或者崩潰致使主線程一直等待

相關文章
相關標籤/搜索