HandlerThread是Android中的一個類,用于在后臺線程中執行任務。要與UI線程進行通信,可以使用Handler類來實現。
首先,在HandlerThread中創建一個Handler對象,并在UI線程中創建一個Handler對象,然后在UI線程中向HandlerThread發送消息,從而實現UI線程與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) {
//處理消息
}
};
}
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傳遞來的消息
}
};
//發送消息給HandlerThread
mHandlerThread.getHandler().sendMessage(new Message());
}
@Override
protected void onDestroy() {
super.onDestroy();
mHandlerThread.quit();
}
}
在上面的例子中,MyHandlerThread類繼承自HandlerThread,并在onLooperPrepared()方法中創建了一個Handler對象用于處理消息。在MainActivity中,我們創建了一個Handler對象用于處理來自HandlerThread的消息,并且可以通過調用getHandler()方法獲取MyHandlerThread中的Handler對象,然后發送消息給HandlerThread。