1. 程式人生 > >Android性能優化--ANR

Android性能優化--ANR

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