HeadlerThread
2015-08-24 11:22
483 查看
一、
官方注释:
Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.
HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,它有个Looper成员变量。这个Looper其实就是对消息队列以及队列处理逻辑的封装,简单说就是 消息队列+消息循环。
二.好处
为什么要使用HandlerThread。
1.开发中如果多次使用类似new Thread(){...}.start()
这种方式开启一个子线程,会创建多个匿名线程,使得程序运行起来越来越慢,
而HandlerThread自带Looper使他可以通过消息来多次重复使用当前线程,节省开支;
2.android系统提供的Handler类内部的Looper默认绑定的是UI线程的消息队列,
对于非UI线程又想使用消息机制,那么HandlerThread内部的Looper是最合适的,它不会干扰或阻塞UI线程。
当我们需要一个工作者线程,而不是把它当作一次性消耗品,用过即废弃的话,就可以使用它。
三、步骤
当你new一个HandlerThread的对象时记得调用其start()方法,然后你可以接着调用其getLooper()方法来new一个Handler对象,
最后你就可以利用此Handler对象来往HandlerThread发送消息来让它为你干活了。
官方注释:
Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.
HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,它有个Looper成员变量。这个Looper其实就是对消息队列以及队列处理逻辑的封装,简单说就是 消息队列+消息循环。
二.好处
为什么要使用HandlerThread。
1.开发中如果多次使用类似new Thread(){...}.start()
这种方式开启一个子线程,会创建多个匿名线程,使得程序运行起来越来越慢,
而HandlerThread自带Looper使他可以通过消息来多次重复使用当前线程,节省开支;
2.android系统提供的Handler类内部的Looper默认绑定的是UI线程的消息队列,
对于非UI线程又想使用消息机制,那么HandlerThread内部的Looper是最合适的,它不会干扰或阻塞UI线程。
当我们需要一个工作者线程,而不是把它当作一次性消耗品,用过即废弃的话,就可以使用它。
三、步骤
当你new一个HandlerThread的对象时记得调用其start()方法,然后你可以接着调用其getLooper()方法来new一个Handler对象,
最后你就可以利用此Handler对象来往HandlerThread发送消息来让它为你干活了。
相关文章推荐
- Android混淆
- javascript——js string 转 int 注意的问题——parseInt
- myeclipse10.7导出war包报错:integrity check error
- 状态管理和绘制几何体(一)
- JsonArray 遍历
- 奇妙的算法—k进制正整数的对k-1取余与按位取余
- 极客标签编程小挑战#31:生成注册页面的显示效果
- Structs2笔记③--局部类型转换案例
- JavaWeb笔记——JSTL标签
- 错误 4 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- JavaWeb笔记——JSTL标签
- 使用OLEDB可以对excel文件进行读取1
- S3C2440 定时器
- Codevs1169 传纸条
- Cortex-M3处理器的舞台
- 饥饿的牛 解题报告
- ajax如何实现页面局部跳转与结果返回
- Logback.xml模板
- JavaWeb笔记——Jsp的指令、内置对象和动作标签
- JavaWeb笔记——Jsp的指令、内置对象和动作标签