Android性能優化--ANR
阿新 • • 發佈:2018-03-07
res watchdog 生命 cat apply() AD 優先級 -- anr
一、ANR(Application Not Responding)(響應性由Activity Manager和Window Manager監控)分類
Service Timeout 20s
BroadcastQueue Timeout 10s
Input Dispatching 5s
二、ANR造成原因
主線程中做了一些耗時工作
主線程被其他線程鎖(主線程所需要的資源正在被其他線程所用)
CPU被其他進程占用
三、如何解決ANR
1.主線程讀取數據(主線程不能獲取網絡數據,可獲取本地數據)
Tip:SharePreference的commit()/apply() //主線程中不要使用commit()提交數據
2.不要在BroadcastReceive的onReceive()方法中做耗時操作
開線程/IntentService提高優先級
3.Activity的生命周期函數中都不應該有太多耗時操作
四、ANR監測--第三方開源庫WatchDog-ANR
1.創建一個監測線程
2.該線程不斷往UI線程post一個任務(i++)
3.睡眠固定時間
4.等線程重新起來後監測之前post的任務是否執行了(相等則ANR)
Android性能優化--ANR