深色模式
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,保证高效、安全的跨进程通信。
