一、概念
HandlerThread继承了Thread,它是一种可以使用Handler的Thread,它在run方法中通过Looper.prepare()创建消息队列,并通过Looper.loop()来开启消息循环,这样在实际的使用中就允许在HandlerThread中创建Handler了。
二、使用
普通Thread主要用于在run方法中执行一个耗时任务,而HandlerThread在内部创建了消息队列,外界需要通过Handler的消息方式来通知HandlerThread执行一个具体的任务。
由于HandlerThread的run方法是一个无限循环,因此当明确不需要再使用HandlerThread时,可以通过它的quit或者quitSafely方法来终止线程的执行。
三、例子
HandlerThread mHandlerThread = new HandlerThread("handlerThreadTest");
Handler mHandler;
private void handlerThreadTest() {
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper(), new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
Log.d(TAG, "zwm, handleMessage: " + msg.what);
return false;
}
});
mHandler.sendEmptyMessage(0);
}