美文网首页
android消息机制

android消息机制

作者: tzlf | 来源:发表于2021-04-19 14:17 被阅读0次

android消息机制涉及角色:Message, MessageQueue, Handler,Looper,ThreadLocal

本文力求通俗的说明android消息机制,在基础的模型上一步步实现上述各个角色。

首先假设在java程序中实现类似功能:

1. 基础模型

上图实现了一个最简单的流程,就是MessageQueue里存放了需要处理的Message,main函数进入while循环,处理Mesage。

2. 添加Handler,插入消息到MessageQueue

Handler 可以往MessageQueue插入消息,MessageQueue中是以链表形式存放Message

android的Message在MessageQueue是按处理时间排列,本示例简单起见直接插在队尾

3. 添加Handler,处理Message

上述的Message处理比较麻烦,需要每一个Message都实现handle()函数

这样就把Message处理移到了Handler,只要重写其handleMessage方法,不用为每个Message重写handle().

4.添加Looper,屏蔽MessageQueue

5.添加ThreadLocal,使当前线程绑定且唯一的Looper,对应的也是唯一的MessageQueue

以上就是android消息模型的简单实现。这里为了易于理解省略了当前线程没有消息时的处理,推荐看下android2.1的源码,其使用了wait/notify实现了等待唤醒,当前版本是使用linux的epoll实现的唤醒。

android源码网址:http://androidxref.com/

相关文章

网友评论

      本文标题:android消息机制

      本文链接:https://www.haomeiwen.com/subject/eicilltx.html