在Android面试中,AMS(ActivityManagerService) 和 PMS(PackageManagerService) 是两个核心系统服务,它们分别负责不同的功能模块,但又在应用运行过程中紧密协作。下面从区别 和作用两方面详细讲解,帮助你系统化理解。
1. 核心作用
-
AMS 是 Android 的**"运行时调度中心"**,负责:
-
四大组件(Activity、Service等)的生命周期管理。
-
进程优先级(如前台/后台进程)和内存回收(LMK)。
-
任务栈(Back Stack)管理,处理应用切换。
-
-
PMS 是 Android 的**"应用信息管理中心"**,负责:
-
安装/卸载 APK,解析
AndroidManifest.xml
(如注册的Activity)。 -
权限管理,检查应用是否声明了所需权限。
-
提供组件信息给AMS(比如AMS启动Activity前,先问PMS这个Activity是否存在)。
-
2. 关键区别
AMS | PMS | |
---|---|---|
管理对象 | 动态运行的组件和进程 | 静态存储的包信息 |
触发时机 | 应用运行时(如启动Activity) | 应用安装或系统启动时 |
依赖关系 | 依赖PMS查询组件信息 | 不依赖AMS,但为AMS提供数据 |
3. 协作举例
当用户点击App图标时:
-
PMS 先确认该Activity是否在
AndroidManifest.xml
中声明。 -
AMS 检查权限,创建任务栈,并调度Activity显示(若进程未启动,会先fork进程)。
一句话总结:
- PMS 管"应用有什么"(静态信息),AMS 管"应用怎么跑"(动态调度)。