Handler

1.Handler在Activity中創(chuàng)建便運行在UI線程中,此時可以進行UI操作。

Handler mHandler1 =new Handler();

2.Handler可以使用HandlerThread創(chuàng)建,需要注意的是,當handlerThread.start()后才能調用handlerThread.getLooper(),不然會有空指針異常。而此時的Handler則運行在HandlerThread線程中,不能進行UI操作,但可以進行異步操作。

HandlerThread handlerThread =new HandlerThread("Main4Activity");

handlerThread.start();

Handler mHandler2 =new Handler(handlerThread.getLooper());


3.可以在一個子線程中去創(chuàng)建一個Handler,然后使用這個handler實例在任何其他線程中發(fā)送消息,最終處理消息的代碼都會在你創(chuàng)建Handler實例的線程中運行。

Thread thread =new Thread(new Runnable() {

@Override

public void run() {

Looper.prepare();

Handler mHandler3 =new Handler();

mHandler3.post(new Runnable() {

@Override

public void run() {

Log.e("mHandler3 : ",Thread.currentThread().getId()+"");

}

});

}

});

thread.start();

相關博文

Android 異步消息處理機制 讓你深入理解 Looper、Handler、Message三者關系 ?

Android HandlerThread 完全解析


Looper主要作用:

1、與當前線程綁定,保證一個線程只會有一個Looper實例,同時一個Looper實例也只有一個MessageQueue。

2、loop()方法,不斷從MessageQueue中去取消息,交給消息的target屬性的dispatchMessage去處理。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容