Android 判斷當前執行緒是否是主執行緒的兩種方法
使用Looper判斷,方法為: Looper.myLooper() != Looper.getMainLooper()
使用執行緒控制程式碼判斷,將主執行緒的Thread.currentThread()獲取到主執行緒當前控制程式碼,儲存起來,在需要判斷的時候呼叫Thread.currentThread()來與之比較,即可判斷當前執行緒是否是主執行緒了。
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();過,其他執行緒需要手動呼叫這兩個,否則會報錯。
相關文章
- 執行緒、開啟執行緒的兩種方式、執行緒下的Join方法、守護執行緒執行緒
- Java非同步判斷執行緒池所有任務是否執行完成的方法Java非同步執行緒
- 在Linux下判斷系統當前是否開啟了超執行緒Linux執行緒
- 這樣執行執行緒是否妥當?執行緒
- 多執行緒-執行緒控制之中斷執行緒執行緒
- Java執行緒:執行緒中斷Java執行緒
- 【java】【多執行緒】建立執行緒的兩種常用方式(2)Java執行緒
- 判斷當前程式是否正在執行
- 保證執行緒在主執行緒執行執行緒
- 主執行緒等待所有其他執行緒執行完畢,然後再繼續執行主執行緒的邏輯,有以下幾種方法可以實現:執行緒
- 建立執行緒的4種方法 and 執行緒的生命週期執行緒
- 多執行緒安全的單例模式(使用判斷nullptr和call_once兩種方法)執行緒單例模式Null
- Android執行緒篇(一)實現執行緒的幾種方法及區別Android執行緒
- 在netty3.x中存在兩種執行緒:boss執行緒和worker執行緒。Netty執行緒
- Java執行緒中斷與終止執行緒執行Java執行緒
- jstack判斷執行緒狀態JS執行緒
- Android的執行緒和執行緒池Android執行緒
- Android 判斷當前的介面是否是桌面的方法Android
- Java如何獲取當前執行緒Java執行緒
- Android 執行緒優化之執行緒池shutdown方法Android執行緒優化
- android 建立多執行緒的幾種方法Android執行緒
- 多執行緒(五)---執行緒的Yield方法執行緒
- java執行緒建立的兩種方式Java執行緒
- Android 多執行緒下載,斷點續傳,執行緒池Android執行緒斷點
- java 多執行緒之使用 interrupt 停止執行緒的幾種方法Java執行緒
- java執行緒執行緒休眠,sleep方法Java執行緒
- 執行緒的中斷執行緒
- new Handler().postDelayed(new Runnable())是否執行在主執行緒?執行緒
- QT 主執行緒子執行緒互相傳值QT執行緒
- Android多執行緒之執行緒池Android執行緒
- Android中UI執行緒與後臺執行緒互動設計的5種方法AndroidUI執行緒
- android 主執行緒和子執行緒之間的訊息傳遞Android執行緒
- Android判斷服務是否在執行Android
- 模擬主執行緒等待子執行緒的過程執行緒
- Java通過join方法來暫停當前執行緒Java執行緒
- iOS多執行緒安全-13種執行緒鎖?iOS執行緒
- 多執行緒-多執行緒兩種方式的圖解比較及區別執行緒圖解
- 當主執行緒崩潰而其它執行緒繼續執行時發生什麼(2)(轉)執行緒