HandlerThread详解

HandlerThread是Android中一种特殊的线程,内置Looper和Handler,用于串行处理任务,避免频繁创建线程。其典型应用场景如IntentService。HandlerThread的启动与Looper准备是同步的,getLooper需在start后调用。退出HandlerThread需调用quit或quitSafely。本文深入探讨HandlerThread的构造、run方法、退出机制以及线程优先级设置。
摘要由CSDN通过智能技术生成

转载请注明链接:https://blog.csdn.net/feather_wch/article/details/82556153

HandlerThread

版本:2018/9/9-1(10:10)


问题汇总

  1. 总结HandlerThread相关所有可能的问题,用于自我检测和查漏补缺。
  2. 【☆】标记的是补充问题,直接给答案。其余问题答案都在文中。

  1. HandlerThread是什么?
  2. 【☆】HandlerThread任务是并行处理的?

    不是!是串行处理的。如果一个任务执行时间过长会阻塞后续任务。

  3. 【☆】HandlerThread不能执行耗时过长的任务?

    内部任务是串行处理的。如果一个任务执行时间过长会阻塞后续任务。

  4. 【☆】如何通过HandlerThread来执行一个具体任务?

    外界需要通过Hanlder的消息方式来通知HandlerThread来执行一个具体任务

  5. HandlerThread产生的背景?

  6. HandlerThread如何退出?
  7. HandlerThread的典型使用场景?
  8. HandlerThread的基本使用流程?
  9. HandlerThread是如何做到一个线程能够一直运行,有新的任务就处理,没有任务就等待?
  10. handlerThread.getLooper()必须在handlerThread.start()之后调用?
  11. HandlerThread的构造方法
  12. HandlerThread的run()做了哪些事情?
  13. HandlerThread如何退出?quit/quit或quitSafely
  14. HandlerThread的Tid有什么用?
  15. 为什么run中有notifyAll,getLooper中有wait?
  16. 为什么要设置线程优先级?为什么能防止内存泄漏和解决数据安全问题?
  17. 线程优先级设置的两种方法?两种方式的优先级范围?

基本使用(7)

1、HandlerThread是什么?

  1. 内嵌Looper、Handler、MessageQueue的Thread
  2. 内部具有队列,任务会串行处理。(如果一个任务执行时间过长,会阻塞后续任务)
  3. 执行任务:外界需要通过Hanlder的消息方式来通知HandlerThread来执行一个具体任务

2、HandlerThread产生的背景?

  1. 一般线程执行完任务后就会停止,如果有很多任务导致频繁创建和销毁线程,会损耗系统资源。
  2. 如果子线程需要更新UI,要使用到Handler,此外需要创建Looper等操作,比较繁琐。

3、HandlerThread如何退出?

  1. HandlerThreadrun方法是无限循环执行的,需要通过HandlerThreadquit或quitSafely方法来终止线程的执行

4、HandlerThread的典型使用场景?

  1. HandlerThread典型使用场景是IntentService

5、HandlerThread的基本使用

/**====================
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值