Android ClientTransaction

1,797 阅读1分钟

Read The Fucking Source Code

引言

  • App 与 AMS 通信场景多,流程复杂。生命周期更新、页面配置更新等等……
  • 如何统筹消息域,减少通信次数,减少两端耦合……
  • ClientTransaction,它来了,序列化对象,汇总生命周期节点、组合所需更新列表……
  • 如果对 App启动流程 不太熟悉,请先看 【Android App启动流程】。
  • 下面就用图说话吧!

源码版本(Android R — API 30)

1. APP-AMS 对应关系

Android 视图模块 启动流程 ClientTransaction APP-AWS对应关系

2. 生命周期

ClientTransaction 生命周期的统筹

Android 基础组件  ClientTransaction 生命周期的统筹

3. 总结图示

ClientTransaction 总结图示

Android 基础组件  ClientTransaction 总结图示

4. 结构组成

ClientTransaction 结构组成

Android 视图模块 启动流程 ClientTransaction 结构组成

5. 流程分析

ClientTransaction 全流程分析

Android 视图模块 启动流程 ClientTransaction 全流程分析

6. 举栗

举栗 : ClientTransaction 启动流程详细分析

Android 视图模块 启动流程 ClientTransaction 启动流程详细分析

7. 小结

  • 减少通信次数:AMS -> APP,一次通信,包含各种通信事件和内容。
  • 统筹消息域:将生命周期变化与事件更新分类统筹,分别处理。
  • 减少两端耦合:AMS 对于生命周期的发送要求,与 APP 对生命周期的处理需求并不对等,所以 APP 会自己组装完整的生命周期回调,处理逻辑更内聚。举例:如果以后要在 onStart()onResume() 中间添加一个 onStartToResume() 回调,那么只修改 APP 侧的逻辑即可,不需要修改 AMS

小编的扩展链接

《Android 基础组件 全家桶》