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。