美文网首页
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