HandlerThread的用途

南瓜饼 2012-12-05 11:01:49
我看了半天HandlerThread也搞不懂它是干嘛的 我用handler和thread不也可以做吗 干嘛非要HandlerThread感觉反而更加麻烦了
...全文
317 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
balmy 2012-12-06
  • 打赏
  • 举报
回复
个人觉得1楼的答案已经指出关键了 HandlerThread“使用wait/notifyAll解决了多线程中子线程1获取子线程2的Looper对象为空的问题”虽然这种情况也许不常遇到,不过还是要注意一下。
追风筝的孩子 2012-12-06
  • 打赏
  • 举报
回复
其实。。我也没深入研究过。。但我看过AsyncTask和progressbar的源码,貌似都用到这个。。然后我发现AsyncTask已经能解决百分之九十九的问题了。。就不研究了
James_focus 2012-12-05
  • 打赏
  • 举报
回复
Android应用中的消息循环由Looper和Handler配合完成,Looper类用于封装消息循环,类中有个MessageQueue消息队列;Handler类封装了消息投递和消息处理等功能。 系统默认情况下只有主线程(即UI线程)绑定Looper对象,因此在主线程中可以直接创建Handler的实例,但是在子线程中就不能直接new出Handler的实例了,因为子线程默认并没有Looper对象,此时会抛出RuntimeException异常; 如果需要在子线程中使用Handler类,首先需要创建Looper类实例,这时可以通过Looper.prepare()和Looper.loop()函数来实现的。通过阅读Framework层源码发现,Android为我们提供了一个HandlerThread类,该类继承Thread类,并使用上面两个函数创建Looper对象,而且使用wait/notifyAll解决了多线程中子线程1获取子线程2的Looper对象为空的问题。这样便成功避免了上述的异常等问题。 详见:http://tech.cncms.com/shouji/android/96016.html
南瓜饼 2012-12-05
  • 打赏
  • 举报
回复
难道就没有人深入研究过吗

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧