HandlerThread是Android中的一個(gè)類(lèi),用于在后臺(tái)線(xiàn)程中執(zhí)行任務(wù)。要與UI線(xiàn)程進(jìn)行通信,可以使用Handler類(lèi)來(lái)實(shí)現(xiàn)。
首先,在HandlerThread中創(chuàng)建一個(gè)Handler對(duì)象,并在UI線(xiàn)程中創(chuàng)建一個(gè)Handler對(duì)象,然后在UI線(xiàn)程中向HandlerThread發(fā)送消息,從而實(shí)現(xiàn)UI線(xiàn)程與HandlerThread之間的通信。
以下是一個(gè)簡(jiǎn)單的示例代碼:
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) {
//處理消息
}
};
}
public Handler getHandler() {
return mHandler;
}
}
public class MainActivity extends AppCompatActivity {
private MyHandlerThread mHandlerThread;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHandlerThread = new MyHandlerThread("MyHandlerThread");
mHandlerThread.start();
mHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
//處理從HandlerThread傳遞來(lái)的消息
}
};
//發(fā)送消息給HandlerThread
mHandlerThread.getHandler().sendMessage(new Message());
}
@Override
protected void onDestroy() {
super.onDestroy();
mHandlerThread.quit();
}
}
在上面的例子中,MyHandlerThread類(lèi)繼承自HandlerThread,并在onLooperPrepared()方法中創(chuàng)建了一個(gè)Handler對(duì)象用于處理消息。在MainActivity中,我們創(chuàng)建了一個(gè)Handler對(duì)象用于處理來(lái)自HandlerThread的消息,并且可以通過(guò)調(diào)用getHandler()方法獲取MyHandlerThread中的Handler對(duì)象,然后發(fā)送消息給HandlerThread。