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

2. ClientTransaction 生命周期的统筹

3. ClientTransaction 总结图示

4. ClientTransaction 结构组成

5. ClientTransaction 全流程分析

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

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