多線程的處理 handler   handlerTread Intentservice

ANR 問題?

ANR 可以在Data/anr/traces.text 文件中。

ANR 是主線程耗時超做5s以上,或者是在發送廣播是時間過長時,出現的提示框。

解決問題 可以在子線程中執行耗時超做,但是不建議在廣播接收者中創建子線程。廣播一般發送10s,結束。

在子線程中執行耗時超做,並且UI更新就會出現FC,就要進行,不同線程間的通訊,可以用handler

在創建UI的線程中重寫

225628388.png

耗時超做在 new Thread

UI創建線程可以 new Handler 從寫handleMessage()耗時超做的線程就可以發送消息到你要的線程。

除此還可以在主線程耗時超做不出現ANR的幾個方法:

230339165.png

除此外還有一個異步任務

   中間參數是 你在doInBackground 在耗時是發送消息的類型,

231214533.png

doInBackground發送消息

231834440.png

啓動異步任務還可以自定義自己的線程池

如果沒有系統的默認5個線程,等待的10個而我們可以通過

232302510.png

232830414.png

自定義消息隊列

233102178.png

用系統的線程

233704546.png

自己用handlerTread

233708802.png

系統的intentservece

233911847.png

233931964.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章