ANR 問題?
ANR 可以在Data/anr/traces.text 文件中。
ANR 是主線程耗時超做5s以上,或者是在發送廣播是時間過長時,出現的提示框。
解決問題 可以在子線程中執行耗時超做,但是不建議在廣播接收者中創建子線程。廣播一般發送10s,結束。
在子線程中執行耗時超做,並且UI更新就會出現FC,就要進行,不同線程間的通訊,可以用handler
在創建UI的線程中重寫
耗時超做在 new Thread
UI創建線程可以 new Handler 從寫handleMessage()耗時超做的線程就可以發送消息到你要的線程。
除此還可以在主線程耗時超做不出現ANR的幾個方法:
除此外還有一個異步任務
中間參數是 你在doInBackground 在耗時是發送消息的類型,
doInBackground發送消息
啓動異步任務還可以自定義自己的線程池
如果沒有系統的默認5個線程,等待的10個而我們可以通過
自定義消息隊列
用系統的線程
自己用handlerTread
系統的intentservece