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