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.非主線程終止或者崩潰致使主線程一直等待