LOOP & HANDLE

Handler一定要在主線程實例化嗎?new Handler()和new Handler(Looper.getMainLooper())的區別
如果你不帶參數的實例化:

Handler handler = new Handler();那麼這個會默認用當前線程的looper

一般而言,如果你的Handler是要來刷新操作UI的,那麼就需要在主線程下跑。
情況:
1.要刷新UI,handler要用到主線程的looper。

那麼在主線程 Handler handler = new Handler();,

如果在其他線程,也要滿足這個功能的話,

要Handler handler = new Handler(Looper.getMainLooper());

2.不用刷新ui,只是處理消息。

當前線程如果是主線程的話,Handler handler = new Handler();

不是主線程的話,

Looper.prepare();

Handler handler = new Handler();

Looper.loop();

 

或者Handler handler = new Handler(Looper.getMainLooper());
若是實例化的時候用Looper.getMainLooper()就表示放到主UI線程去處理。

如果不是的話,

因爲只有UI線程默認Loop.prepare();Loop.loop();過,

其他線程需要手動調用這兩個,否則會報錯。

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