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
配置决定是否启动新进程。