HandlerThread是一個帶有Looper的線程類,它繼承自Thread類并實現(xiàn)了Runnable接口。它的主要作用是為了方便在后臺線程中執(zhí)行一系列的任務(wù),并且能夠通過Handler與主線程進(jìn)行通信。
HandlerThread的原理如下:
使用實例如下:
public class MyHandlerThread extends HandlerThread {
private Handler mHandler;
public MyHandlerThread(String name) {
super(name);
}
@Override
protected void onLooperPrepared() {
super.onLooperPrepared();
mHandler = new Handler(getLooper()) {
@Override
public void handleMessage(Message msg) {
// 在HandlerThread中處理消息
// ...
}
};
}
public void sendMessage(int what) {
if (mHandler != null) {
mHandler.sendEmptyMessage(what);
}
}
}
在主線程中使用MyHandlerThread:
MyHandlerThread handlerThread = new MyHandlerThread("MyHandlerThread");
handlerThread.start();
// 發(fā)送消息到HandlerThread中處理
handlerThread.sendMessage(1);
在MyHandlerThread中,我們重寫了onLooperPrepared()方法,在該方法中初始化了Handler對象,并將其與HandlerThread綁定在一起。然后,在外部可以調(diào)用sendMessage()方法向HandlerThread發(fā)送消息進(jìn)行處理。