handlerthread如何与UI线程通信

avatar
作者
猴君
阅读量: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。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!