HandlerThread

HandlerThread继承了Thread,它是一种可以使用Handler的Thread,它的实现也很简单,就是在run方法中通过Looper.prepare()来创建消息队列,并通过Looper.loop()来开启消息循环。

@Override
public void run() {
    mTid = Process.myTid();
    Looper.prepare();
    synchronized (this) {
        /**
         * 获取到当前Thread的Looper对象
         * 然互通知 getLooper 方法,这个时候可以返回(同步)
         */
        mLooper = Looper.myLooper();
        notifyAll();
    }
    Process.setThreadPriority(mPriority);
    onLooperPrepared();
    Looper.loop();
    mTid = -1;
}

从HandlerThread的实现来看,它和普通的Thread有明显的不同之处。普通的Thread主要用于在run方法中执行一段耗时任务,而HandlerThread在内部创建了消息队列,外界要通过Handler的消息队列来通知HandlerThread执行一个具体任务。由于HandlerThread 的run方法是一个无限循环,因此当明确不需要再使用HandlerThread时,应该通过它的quit或者quitSafely方法来终止线程的执行。HandlerThread是一个非常有用的类,在Android中的一个具体的使用场景就是IntentService,请看:
IntentService 示例与详解

你可能感兴趣的:(HandlerThread)