Looper、Handler应用---实现主线程向子线程发送消息
生活随笔
收集整理的这篇文章主要介绍了
Looper、Handler应用---实现主线程向子线程发送消息
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
准备知识:
Looper类:为一个线程开启一个消息循环,里面有一个消息队列,新线程是没有开启消息循环的,所以需要用到Looper的方法创建消息循环(主线程除外,主线程会自动为其创建Looper对象,开启消息循环),MessageQueue存放消息和事件 Handler类:辅助类,向绑定的Looper投递消息 Looper原型: Looper.prepare() Looper.loop Looper.quit 代码: [java] view plaincopy1、new Handler()必须在子线程的run方法中,否则不是子线程的Handler
2、在getHandler方法中,我加入了同步,防止线程start了,但是并没有run结束,若此时直接返回mHandler会是一个null(不行可以试试,我一开始郁闷许久,最后在源码中发现有更稳定的实现,所以效仿了,
后记:
看来源码还是写得很健壮的,仍需多加学习!
总结一下(也许不对,请怀疑):
一个线程有一个对应的Looper,这个Looper就是消息循环,我理解就是提供了一个消息循环的场所,但是消息的投递,消息的处理它不做,它会绑定一个Handler,然后Handler去投递和处理消息,一个线程中实现handleMessage,另外一个线程就可以sendMessage,线程可以主或者子,进而实现线程间消息的传递。总结
以上是生活随笔为你收集整理的Looper、Handler应用---实现主线程向子线程发送消息的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Android多线程----异步消息处理
- 下一篇: Handler-接受子线程数据更新UI主