安卓重要知识点1
AMS 的初始化流程与核心数据结构
AMS(ActivityManagerService)作为 Android 框架层的核心服务,其初始化过程贯穿 SystemServer 启动阶段,涉及复杂的环境配置与数据结构构建,为后续应用管理奠定基础。
AMS 的初始化始于 SystemServer 的 startBootstrapServices()
方法,主要分为三个阶段:
- 实例创建与基础配置:通过
ActivityManagerService.Lifecycle.startService()
创建 AMS 实例,初始化内部锁机制(如 mServiceLock
用于线程同步),设置系统上下文(mContext
),并注册到 ServiceManager(Binder 服务名为 “activity”),使其他进程可通过 Binder 调用其接口。 - 核心组件初始化:创建
ActivityTaskManagerService
(ATMS,Android 10 后从 AMS 拆分,专注任务栈管理)、ProcessRecordList
(进程记录表)、TaskRecord
(任务栈数据结构)等关键组件;初始化 AppOpsService
(应用操作权限管理)与 UsageStatsService
(应用使用统计),并与 PMS(PackageManagerService)建立通信,获取应用安装信息。 - 策略与规则配置:加载进程优先级规则(如前台进程、可见进程、后台进程的内存回收策略),设置 Activity 启动模式(standard、singleTop 等)的处理逻辑,初始化
ActivityStackSupervisor
(栈管理监听器),并启动 Watchdog
监控线程(检测 AMS 卡死)。
AMS 依赖多个核心数据结构实现功能:
- ProcessRecord:记录应用进程信息,包括 PID、UID、进程名、状态(如前台 / 后台)、关联的 Activity 与 Service 列表,是 AMS 进行进程管理与资源调度的基础。
- ActivityRecord:描述单个 Activity 实例,包含组件信息(
ComponentName
)、生命周期状态(如 RESUMED、PAUSED)、所在任务栈(TaskRecord
)、窗口信息(WindowState
)等,用于跟踪 Activity 状态变化。 - TaskRecord:代表一个任务栈,存储一系列相关 ActivityRecord(如浏览器打开的多个页面),维护 Activity 跳转顺序,支持 “返回” 操作与任务切换(如近期任务列表)。
- ActivityStack:管理多个 TaskRecord,按显示优先级组织(如全屏应用栈、对话框栈),决定任务的显示与隐藏逻辑。
AMS 初始化完成后,系统具备了管理应用进程、Activity 生命周期与任务栈的能力,为接收用户操作(如启动应用)做好准备。其数据结构设计体现了 “状态跟踪” 与 “层级管理” 的核心思想,确保多任务环境下的有序运行。
第 3 篇:AMS 对 Activity 生命周期的管理机制
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/web/92064.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!