自定义工作线程 HandlerThread + new Handler(handlerThread.getLooper())

自定义工作线程 HandlerThread + new Handler(handlerThread.getLooper()) 的写法如下:

HandlerThread handlerThread = new HandlerThread("Data");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());

HandlerThread handlerThread = new HandlerThread("Data");
handlerThread.start();

创建了一个名为Data的新线程,并且这个线程是一个 HandlerThread,它内部已经初始化了 Looper。当调用 handlerThread.start() 时,该线程会启动并开始其消息循环(Looper.loop())

Handler handler = new Handler(handlerThread.getLooper());

创建了一个与该自定义工作线程相关联的 Handler。当通过 handler 发送的消息或 Runnable 将在 handlerThread 线程中执行,而不是在主线程(UI线程)执行。

HandlerThread介绍

HandlerThread 是一个继承自 Thread 的类,它在其内部初始化了一个 Looper,因此它是一个可以运行消息循环的线程。这意味着你在 HandlerThread 中创建的 Handler 可以处理其内部消息队列中的消息,而这些消息的处理将在 HandlerThread 所代表的工作线程中完成,而不是在主线程。

HandlerThread的主要作用:

  • 创建一个可处理消息的后台线程,用于执行耗时操作,如网络请求、文件I/O等。
  • 分离工作负载,避免阻塞UI线程,提升应用性能和响应速度。
  • 提供一种简单的机制来将结果反馈回主线程,因为可以在HandlerThread内部创建一个与之关联的Handler,并通过这个Handler向主线程发送消息。

HandlerThread + Handler 结合使用通常是在需要执行耗时任务(例如文件读写、大量计算、长时间等待的网络请求等),为了避免阻塞UI线程,会创建一个工作线程(如使用 HandlerThread 类)。这样可以在该线程上处理耗时操作,而不会影响应用的响应性和流畅性

相关推荐

  1. Springboot定义线池ThreadPoolTaskExecutor

    2024-01-16 16:52:01       57 阅读
  2. SpringBoot集成定义线

    2024-01-16 16:52:01       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-16 16:52:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-16 16:52:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-16 16:52:01       87 阅读
  4. Python语言-面向对象

    2024-01-16 16:52:01       96 阅读

热门阅读

  1. 【JVM】字节码文件的组成

    2024-01-16 16:52:01       56 阅读
  2. Android 13 默认讯飞输入法

    2024-01-16 16:52:01       72 阅读
  3. 大模型相关资料

    2024-01-16 16:52:01       59 阅读
  4. YOLOv8自带的追踪算法简单使用教程

    2024-01-16 16:52:01       54 阅读
  5. 用友U8录请购单时调不到名字

    2024-01-16 16:52:01       52 阅读
  6. org.openjdk.jmh 的 pom 引用

    2024-01-16 16:52:01       53 阅读
  7. 图片转换成png格式上传

    2024-01-16 16:52:01       55 阅读
  8. 开放签电子签章加入渠成开源社区

    2024-01-16 16:52:01       56 阅读
  9. vue3 | 自定义遮罩层组件

    2024-01-16 16:52:01       51 阅读
  10. C#经典十大排序算法(详细教程)

    2024-01-16 16:52:01       54 阅读
  11. Go语言干货系列:错误处理的最佳实践与技巧

    2024-01-16 16:52:01       57 阅读