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;
}