AMS 对 Activity 生命周期的管理机制
生命周期管理的核心流程
跨进程通信与同步机制
- AMS 作为服务端,通过
IActivityManager接口暴露生命周期管理方法(如startActivity()、pauseActivity())。 - 应用进程的
ActivityThread作为客户端,通过ActivityManagerNative.getDefault()获取 AMS 代理,发送状态变化请求;同时,应用进程通过IApplicationThread接口向 AMS 反馈本地生命周期执行结果(如onCreate()完成)。
- 锁机制:通过
mServiceLock同步对ActivityRecord、TaskRecord等数据结构的修改。 - 事务屏障:使用
Handler消息队列的屏障机制(postSyncBarrier()),确保生命周期关键消息(如 resume)优先于普通消息执行,避免时序混乱。
异常场景的生命周期处理
- 进程回收:优先终止后台 Activity 所在进程,触发
onSaveInstanceState()保存状态,待后续重建时通过onRestoreInstanceState()恢复数据。 - 崩溃恢复:若前台 Activity 崩溃,AMS 会重启应用进程并重建 Activity,或根据
android:process配置决定是否启动新进程。