HandlerThread源码

HandlerThread继承于线程,内部包含一个Looper,Looper在run方法中初始化并进入Loop循环

public void run() {
	 mTid = Process.myTid();
	 Looper.prepare();
	 Looper.loop();
}

外部使用时,利用这个Looper生成Handler,这样这个Handler的dispatchmessage方法就在子线程中运行了

public Looper getLooper() {
	return mLooper;
}
var handler:Handler = Handler(HandlerThread("123").looper){
        when(it.what){   
        }
    }

线程退出,需要调用quit函数,退出Loop循环

public boolean quit() {
        Looper looper = getLooper();
        if (looper != null) {
            looper.quit();
            return true;
        }
        return false;
    }

版权声明:本文为hongzhily原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。