Handler,Looper,MessageQueue,android中的消息机制以及源码分析(一)

作为进阶内容,简单用法将不会做介绍~刚接触的同学请自行查找相关的概念和使用方式~在未来更新新手入门教程的过程中,会加入这些基本用法。还请见谅~么么哒~


本篇主要是简单介绍消息机制模型和各组件的了解,源码分析请见Handler,Looper,MessageQueue,android中的消息机制以及源码分析(二)


在android开发中,经常会使用到handler作为线程之间通信的工具。例如:通过handler在子线程中更新UI线程等。本篇将会简单介绍Handler,Looper,MessageQueue互相之间的关系。在了解关系后,再看源码理解起来会更容易,对消息机制的的也会有初步的认识。



(画图无能。。。借用别人的一张图 = =)


从这张图里我们能看出什么?


0. Message:消息。

1. Handler:消息处理者,负责发送和处理消息。handler工作在它所创建的线程内。例如:在主线程创建Handler,那么该handler将可以完成包括更新UI在内的主线程可以进行的操作。

2. MessageQueue:消息队列。

3. Looper:轮巡器,负责轮巡查看队列中的消息,取出消息并分发给handler处理。Looper和MessageQueue是一一对应的,即一个Looper只能有一个MessageQueue,反之亦然。一个Looper可以对应多个Handler。

4. Thread:既然作为线程间通信,handler和looper所在线程可以是不同的(通常情况下都处在不同的线程当中)。一个Thread只能有一个Looper。试想一下,如果一个线程中有很多looper存在,而一个looper对应了一个MessageQueue,这样当有一个Message被放入该线程的消息队列时,放在哪一个消息队列中好呢?这会带来一些列的问题,所以一个线程中只有一个Looper存在是比较理想的。至于如何实现的,我们可以看下一篇文章。


一个完整的消息过程应该是这样的:


looper所在的线程中,handler发送一条消息并添加到消息队列中,looper轮巡查看是否有消息产生,有的话把队列里最上面的消息分发给handler,由handler中实现的handleMessage方法或者调用callback在handler绑定的线程中处理该消息。

简单的介绍就到这里~详细的内容会在后面的章节中跟大家分享~

如有错误,欢迎指正~




-----------------割-------------------


昨天豌豆荚的电面= =不是很理想。最近有点浮躁,趁这个被打击的机会把以前看的东西理一理。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值