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 示例与详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容