我们在一个线程中使用Handler的步骤
- Looper.prepare()创建与当前线程绑定的Looper
- Handler handler = new Handler(Looper.myLooper())
- Looper.loop()开启循环访问消息队列
对于Handler机制的原理,可以参考http://blog.youkuaiyun.com/actor1999/article/details/70210901
HandlerThread继承Thread,它的run()方法为
@Override
public void run() {
mTid = Process.myTid();
Looper.prepare();
synchronized (this) {
mLooper = Looper.myLooper();
notifyAll();
}
Process.setThreadPriority(mPriority);
onLooperPrepared();
Looper.loop();
mTid = -1;
}
HandlerThread使用:
HandlerThread handlerThread = new HandlerThread();
handlerThread.start();
Handler handler = new Handler(handler.getLooper());
可以看出HandlerThread就是将我们使用Handler要做的事情封装一下而已。