郭孝星,程序员,吉他手,主要从事 Android 平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的 Github 提 issue 或者发邮件至 guoxiaoxingse@163.com 与我交流。
文章目录
第一次阅览本系列文章,请参见 导读 ,更多文章请参见 文章目录 。
Android 是一个消息驱动型的系统,消息机制在 Android 系统中扮演者重要的角色,与之相关的 Handler 也是我日常中常用的工具。今天我们就来聊一聊这个。
Android 消息循环流程图如下所示:
主要涉及的角色如下所示:
整个消息的循环流程还是比较清晰的,具体说来:
事实上,在整个消息循环的流程中,并不只有 Java 层参与,很多重要的工作都是在 C++ 层来完成的。我们来看下这些类的调用关系。
注:虚线表示关联关系,实线表示调用关系。
在这些类中 MessageQueue 是 Java 层与 C++ 层维系的桥梁,MessageQueue 与 Looper 相关功能都通过 MessageQueue 的 Native 方法来完成,而其他虚线连接的类只有关联关系,并没有 直接调用的关系,它们发生关联的桥梁是 MessageQueue。
有了上面这些分析,相信我们对 Android 的消息机制有了大致的理解,对于这套机制,我们很自然会去思考三个方面的问题:
来源: https://juejin.im/post/5a436a426fb9a0451c3aada6