1.HandlerThread 首先它是Thread,继承自Thread
java
public class HandlerThread extends Thread {}
2.与Thread不同的地方
在Thread的run方法里面
- 调用Looper.prepare()创建Looper
- 调用Looper.loop(),可循环处理消息
java
public class HandlerThread extends Thread {
@Override
public void run() {
mTid = Process.myTid();
Looper.prepare(); //创建Looper
synchronized (this) {//锁
mLooper = Looper.myLooper();
notifyAll();
}
Process.setThreadPriority(mPriority);
onLooperPrepared();
Looper.loop(); //循环处理收到的Message
mTid = -1;
}
}
3.怎么使用,举个例子
java
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
public class MyHandlerThreadExample {
private HandlerThread handlerThread;
private Handler handler;
public MyHandlerThreadExample() {
// 创建一个名为"MyHandlerThread"的新线程
handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start(); // 启动线程
// 在新线程上创建一个Handler
handler = new Handler(handlerThread.getLooper()) {
@Override
public void handleMessage(Message msg) {
// 在这里处理消息
// 这个方法在 handlerThread 所在的线程上执行
int what = msg.what;
switch (what) {
case 1:
// 处理消息类型为1的情况
break;
// 添加其他处理不同消息类型的逻辑
}
}
};
}
// 在主线程或其他地方发送消息到HandlerThread
public void sendMessageToHandlerThread(int messageType) {
Message message = handler.obtainMessage(messageType);
handler.sendMessage(message);
}
// 在适当的时候停止HandlerThread
public void stopHandlerThread() {
handlerThread.quit();
}
}