首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

HandlerThread的用场

2013-01-08 
HandlerThread的用途我看了半天HandlerThread也搞不懂它是干嘛的 我用handler和thread不也可以做吗 干嘛非

HandlerThread的用途
我看了半天HandlerThread也搞不懂它是干嘛的 我用handler和thread不也可以做吗 干嘛非要HandlerThread感觉反而更加麻烦了
[解决办法]
 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

热点排行