Anroid P的activity生命周期代码架构发生了重大变化,引入了一套Transaction接口,整体结构关系如下,以启动activity为例,从AMS部分的ASS部分开始,进行事务调度,先通过ClientLifecycleManager管理器执行事务调度,ClientLifecycleManager是Transaction接口对AMS提供的一个接口层,它进一步调用ClientTransaction,通过binder接口将控制从AMS所在的系统进程转移到APP进程,
AT是APP进程的主线程,它分几大部分,ApplicationThread是binder接口,H是线程内部消息处理hanler,ActivityClientRecord是activity结构实体封装,还要AT自身的功能处理函数。调用从AMS通过binder接口后,转换为线程内部消息,发送给handlerH,H调用事务执行器TransactionExecutor的通用接口,
执行器会调用executeCallbacks和executeLifecycleState,执行预先向其内部设置的callback和生命周期item,同时执行体内部还维护一个状态处理函数,用于处理生命周期的管理状态。
callback和生命周期item会通过ObjectPool来进行缓存,每个item的事项实际上是调用的AT的功能接口函数完成activity的生命周期管理,这样处理会使功能结构更加清晰,扩展性更强。
Activity在androidP启动的大概流程如下,
启动新进程
新activity启动的部分生命周期