深色模式
Android AMS(Activity Manager Service)
AMS 的主要职责
Activity 管理
- 管理 Activity 栈。
- 启动、切换、暂停、恢复和销毁 Activity。
- 管理任务栈(Task Stack)。
进程和线程管理
- 启动和终止应用进程。
- 调度线程,分配系统资源。
任务栈管理
- 管理任务栈及其关联(如
TaskAffinity
)。 - 支持多任务和分屏。
- 管理任务栈及其关联(如
应用生命周期管理
- 调用生命周期方法(如
onCreate()
、onStart()
)。 - 处理配置变化(如横竖屏切换)。
- 调用生命周期方法(如
广播管理
- 管理和分发广播消息。
服务管理
- 启动、绑定和销毁
Service
。
- 启动、绑定和销毁
权限和安全管理
- 验证组件间交互的权限。
- 管控系统资源的访问。
资源调度
- 进行内存清理、低内存回收、进程优先级调整。
AMS 的核心结构
AMS 在
system_server
中运行- AMS 是系统进程的一部分,负责系统级任务调度。
与应用进程中的
ActivityThread
交互- 应用进程通过
ActivityThread
与 AMS 通信。 - AMS 调用
ActivityThread
来触发生命周期方法。
- 应用进程通过
Binder 通信机制
- AMS 的操作通过 Binder IPC 与应用进程交互。
Activity 栈
- AMS 内部维护多个 Activity 栈,记录各应用的 Activity 状态。
AMS 的工作流程
启动 Activity 的流程
- 用户点击应用图标,Launcher 调用
startActivity()
。 - AMS 接收到启动请求,决定是否新建或复用任务栈。
- AMS 通知 Zygote 启动新进程(如果进程尚未启动)。
- 通过 Binder 调用目标进程的
ActivityThread
。 ActivityThread
执行生命周期方法,如onCreate()
、onStart()
。
切换应用的流程
- AMS 通过 Activity 栈找到前后台 Activity。
- 调用前台 Activity 的
onResume()
,后台 Activity 的onPause()
。
进程回收的流程
- 系统内存不足时,AMS 根据进程优先级(如前台、后台服务等)决定回收低优先级进程。
- 调用
onStop()
和onDestroy()
完成资源清理。
AMS 与其他组件的关系
与 WindowManagerService(WMS)
- AMS 负责 Activity 的启动和生命周期管理,WMS 管理窗口显示和绘制。
与 PackageManagerService(PMS)
- AMS 使用 PMS 提供的元信息(如组件清单、权限)来启动应用。
与 Zygote
- AMS 请求 Zygote 启动新的应用进程。
与 Binder
- 所有操作基于 Binder IPC,保证高效、安全的跨进程通信。