HandlerThread
HandlerThread本質(zhì)上就是一個普通Thread,只不過內(nèi)部建立了Looper.
- HandlerThread擁有自己的消息隊列,它不會干擾或阻塞UI線程
- 對于網(wǎng)絡(luò)IO操作,HandlerThread并不適合糊昙,因為它只有一個線程规脸,還得排隊一個一個等著
Handler常規(guī)用法
//創(chuàng)建一個線程,線程名字:handler-thread
myHandlerThread = new HandlerThread( "handler-thread") ;
//開啟一個線程
myHandlerThread.start();
//在這個線程中創(chuàng)建一個handler對象
handler = new Handler( myHandlerThread.getLooper() ){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//這個方法是運行在 handler-thread 線程中的 细办,可以執(zhí)行耗時操作
Log.d( "handler " , "消息: " + msg.what + " 線程: " + Thread.currentThread().getName() ) ;
}
};
//在主線程給handler發(fā)送消息
handler.sendEmptyMessage( 1 ) ;
new Thread(new Runnable() {
@Override
public void run() {
//在子線程給handler發(fā)送數(shù)據(jù)
handler.sendEmptyMessage( 2 ) ;
}
}).start() ;
參考鏈接