//1.初始化,參數爲名字,也就是線程的名字,後面我們會結合源碼來看
mHandlerThread = new HandlerThread("WorkThread");
//必須調用start方法,因爲HandlerThread繼承自Thread來啓動線程
mHandlerThread.start();
//初始化Handler,只是傳遞了一個mHandlerThread內部的一個looper
mHandler = new Handler(mHandlerThread.getLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d("WorkThread", (Looper.getMainLooper() == Looper.myLooper()) + "," + msg.what);
}
};
//2.使用
public void send(View view) {
new SendThread(mHandler).start();
}
private final class SendThread extends Thread {
private Handler mHandler;
SendThread(Handler handler) {
this.mHandler = handler;
}
@Override
public void run() {
super.run();
for (int i = 0; i < 3; i++) {
mHandler.sendEmptyMessage(0x1);
SystemClock.sleep(1000);
}
}
}
https://www.jianshu.com/p/c20de49d8d9a
總結一下: