阅读量:2
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。