1.Handler在Activity中創(chuàng)建便運(yùn)行在UI線程中,此時可以進(jìn)行UI操作。
Handler mHandler1 =new Handler();
2.Handler可以使用HandlerThread創(chuàng)建,需要注意的是,當(dāng)handlerThread.start()后才能調(diào)用handlerThread.getLooper(),不然會有空指針異常。而此時的Handler則運(yùn)行在HandlerThread線程中,不能進(jìn)行UI操作,但可以進(jìn)行異步操作。
HandlerThread handlerThread =new HandlerThread("Main4Activity");
handlerThread.start();
Handler mHandler2 =new Handler(handlerThread.getLooper());
3.可以在一個子線程中去創(chuàng)建一個Handler,然后使用這個handler實例在任何其他線程中發(fā)送消息,最終處理消息的代碼都會在你創(chuàng)建Handler實例的線程中運(yùn)行。
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();
相關(guān)博文
Android 異步消息處理機(jī)制 讓你深入理解 Looper、Handler、Message三者關(guān)系 ?
Looper主要作用:
1、與當(dāng)前線程綁定,保證一個線程只會有一個Looper實例,同時一個Looper實例也只有一個MessageQueue。
2、loop()方法,不斷從MessageQueue中去取消息,交給消息的target屬性的dispatchMessage去處理。