Read The Fucking Source Code
引言
- App 与 AMS 通信场景多,流程复杂。生命周期更新、页面配置更新等等……
- 如何统筹消息域,减少通信次数,减少两端耦合……
- ClientTransaction,它来了,序列化对象,汇总生命周期节点、组合所需更新列表……
- 如果对
App启动流程
不太熟悉,请先看 【Android App启动流程】。 - 下面就用图说话吧!
源码版本(Android R — API 30)
1. APP-AMS 对于关系
Android 基础组件 ClientTransaction APP-AMS对应关系
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
。