HandlerThread

114 阅读2分钟

HandlerThread 是 Android 中的一个类,它继承自 Thread,并实现了 Handler 的消息处理机制。HandlerThread 通常用于在后台线程中执行耗时操作,同时能够安全地与 UI 线程进行通信,以避免直接在 UI 线程中执行长时间运行的任务导致的界面卡顿。

以下是 HandlerThread 的主要特点和用法:

  1. 创建 HandlerThread: 通过创建一个 HandlerThread 的实例,并调用其 start() 方法来启动线程。
HandlerThread handlerThread = new HandlerThread("MyHandlerThread");  
handlerThread.start();
  1. 获取 Handler: 一旦线程启动,你可以通过调用 getLooper()new Handler(Looper) 来获取一个与 HandlerThread 关联的 Handler。这个 Handler 允许你在 HandlerThread 线程中发送和处理消息或 Runnable 对象。
Handler handler = new Handler(handlerThread.getLooper());
  1. 发送消息或 Runnable: 使用 Handlerpost()postDelayed()sendMessage()sendMessageDelayed() 方法来发送消息或 Runnable 对象到 HandlerThread 中执行。
handler.post(new Runnable() {  
    @Override  
    public void run() {  
        // 这里是 HandlerThread 线程中执行的代码  
    }  
});
  1. 线程结束: 当不再需要 HandlerThread 时,应该调用其 quit()quitSafely() 方法来结束线程。这将停止在 HandlerThread 中接收新的消息和 Runnable,但已经排队的任务仍然会被执行。
handlerThread.quit();
  1. 注意事项

    1. 由于 HandlerThread 是一个后台线程,所以你不应该在该线程中执行与 UI 相关的操作,除非通过 UI 线程的 Handler 或其他机制(如 Activity.runOnUiThread())进行。
    2. 使用 HandlerThread 时要注意线程安全和资源管理,确保在适当的时候释放资源并结束线程。

HandlerThread 提供了一个方便的机制,用于在后台线程中执行耗时的操作,并通过消息传递机制与 UI 线程进行通信,从而提高了 Android 应用程序的响应性和用户体验。

  1. 总结

Handler 可以把代码放到指定的线程中执行