在 Android 系统中,系统服务(System Services) 是指由 system_server
进程启动并管理的一系列核心服务,负责处理 Android 应用与系统资源之间的交互。这些服务提供了对硬件、应用生命周期、UI、安全、网络等的统一管理和调度。
🧠 一、主要系统服务分类
1. AMS(ActivityManagerService)
- 作用: 管理四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的生命周期和任务栈。
- 常见功能:
- 启动/停止 Activity 和 Service
- 管理任务栈(Task)
- 广播发送与接收控制
- 用户切换与多用户支持
- AIDL 接口:
IActivityManager
2. PMS(PackageManagerService)
- 作用: 负责 APK 的安装、卸载、权限管理以及包信息查询。
- 常见功能:
- 安装/卸载 APK
- 查询已安装包名、权限、签名等
- 权限授予/撤销
- 获取组件信息(如 ActivityInfo、ApplicationInfo)
- AIDL 接口:
IPackageManager
3. WMS(WindowManagerService)
- 作用: 管理窗口层级、布局、焦点、动画等 UI 相关操作。
- 常见功能:
- 添加/移除窗口
- 设置窗口属性(如大小、位置)
- 处理窗口焦点切换
- 管理屏幕旋转
- 相关类:
IWindowManager
,WindowManagerPolicy
4. IMS(InputMethodManagerService)
- 作用: 管理输入法(IME)的显示、隐藏、切换等行为。
- 常见功能:
- 显示/隐藏软键盘
- 输入法切换
- 输入法绑定到 EditText
- 相关类:
IInputMethodManager
5. SMS(SensorManagerService)
- 作用: 管理传感器(加速度计、陀螺仪、光线传感器等)的数据采集与分发。
- 常见功能:
- 注册/注销传感器监听器
- 获取传感器数据
- 控制传感器采样频率
- 相关类:
ISensorManager
6. VMS(VibratorService)
- 作用: 控制设备震动。
- 常见功能:
- 触发震动
- 停止震动
- 相关类:
IVibratorService
7. LMS(LocationManagerService)
- 作用: 提供基于 GPS/WiFi 的定位服务。
- 常见功能:
- 请求位置更新
- 注册/注销监听器
- 获取最后已知位置
- 相关类:
ILocationManager
8. AMS(AudioManagerService)
- 作用: 管理音频播放、音量调节、音频模式切换等。
- 常见功能:
- 音量调节
- 静音控制
- 音频焦点分配
- 相关类:
IAudioService
9. DMS(DisplayManagerService)
- 作用: 管理显示设备(主屏、外接显示器)的状态与配置。
- 常见功能:
- 获取当前显示设备信息
- 控制休眠/唤醒
- 屏幕亮度调节
- 相关类:
IDisplayManager
10. SMS(SurfaceFlinger / DisplayConfig)
- 作用: 图像合成服务,将多个图层合成为最终图像输出到屏幕上。
- 常见功能:
- 图像渲染优化
- Surface 缓冲区管理
- 显示帧率同步
- 相关类:
SurfaceComposerClient
,IGraphicBufferProducer
11. AlarmManagerService
- 作用: 管理定时任务(闹钟),即使应用退出也能执行。
- 常见功能:
- 设置一次性或重复性定时任务
- 在特定时间触发广播或服务
- 相关类:
IAlarmManager
12. BatteryService / BatteryStatsService
- 作用: 管理电池状态、电量统计、耗电分析。
- 常见功能:
- 获取当前电量
- 统计各应用耗电情况
- 判断是否处于充电状态
- 相关类:
IBatteryPropertiesRegistrar
,IBatteryStats
13. NotificationManagerService
- 作用: 管理通知的创建、展示、取消等。
- 常见功能:
- 发送通知
- 清除通知
- 管理通知渠道
- 相关类:
INotificationManager
14. PowerManagerService
- 作用: 管理电源状态(亮屏、灭屏、休眠等)。
- 常见功能:
- 获取 WakeLock 锁
- 控制屏幕开关
- 检测设备是否进入休眠
- 相关类:
IPowerManager
15. TelephonyRegistry / TelecomManager
- 作用: 管理电话通信(通话、短信、SIM 卡状态等)。
- 常见功能:
- 监听通话状态
- 获取 SIM 卡信息
- 拨打电话、发送短信
- 相关类:
ITelephony
,ITelecomService
16. CameraService
- 作用: 管理相机硬件访问。
- 常见功能:
- 打开/关闭相机
- 控制摄像头参数
- 获取相机特性
- 相关类:
ICameraService
,ICameraDevice
17. AccessibilityManagerService
- 作用: 提供无障碍服务(如 TalkBack、自动点击等)。
- 常见功能:
- 注册无障碍服务
- 模拟点击、滑动操作
- 监听 UI 元素变化
- 相关类:
IAccessibilityManager
,IAccessibilityInteractionConnection
18. JobSchedulerService / JobScheduler
- 作用: 管理后台任务的执行策略(延迟、网络条件等)。
- 常见功能:
- 安排周期性任务
- 根据网络、充电状态执行任务
- 相关类:
IJobScheduler
19. DropBoxManagerService
- 作用: 收集系统日志、崩溃信息,用于调试。
- 常见功能:
- 添加日志条目
- 查看历史日志
- 相关类:
IDropBoxManager
20. AccountManagerService
- 作用: 管理用户账户(Google、Facebook 等)。
- 常见功能:
- 添加/删除账户
- 获取账户认证令牌
- 相关类:
IAccountManager
📚 二、系统服务调用方式
方式 | 描述 |
---|---|
ServiceManager.getService(String name) | 通过名称获取系统服务的 IBinder |
Context.getSystemService(String name) | 从 Context 中获取服务实例 |
Binder.getService(IBinder binder) | 将 IBinder 转换为接口对象 |
示例:
// 获取 ActivityManagerService
IActivityManager am = ActivityManager.getService();// 获取 PackageManagerService
IPackageManager pm = IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
🔐 三、系统服务调用权限说明
部分系统服务需要特殊权限才能访问,例如:
权限 | 用途 |
---|---|
android.permission.DUMP | 可以 dump 系统服务状态 |
android.permission.INTERACT_ACROSS_USERS | 跨用户操作 |
android.permission.PACKAGE_USAGE_STATS | 使用 UID 状态观察者 |
android.Manifest.permission.SET_ANIMATION_SCALE | 修改动画缩放 |
android.Manifest.permission.SHUTDOWN | 关机权限 |
📌 四、常用系统服务名称列表(service_manager
中注册)
服务名 | 对应服务类 |
---|---|
activity | ActivityManagerService |
package | PackageManagerService |
window | WindowManagerService |
input_method | InputMethodManagerService |
power | PowerManagerService |
location | LocationManagerService |
vibrator | VibratorService |
alarm | AlarmManagerService |
notification | NotificationManagerService |
telephony.registry | TelephonyRegistry |
display | DisplayManagerService |
sensorservice | SensorService |
audio | AudioService |
batterystats | BatteryStatsService |
cameraservice | CameraService |
accessibility | AccessibilityManagerService |
job_scheduler | JobSchedulerService |
dropbox | DropBoxManagerService |
account | AccountManagerService |
✅ 五、总结表格
服务名 | Java 类 | AIDL 接口 | 主要功能 |
---|---|---|---|
activity | ActivityManagerService | IActivityManager | 管理 Activity 生命周期 |
package | PackageManagerService | IPackageManager | 包安装、卸载、查询 |
window | WindowManagerService | IWindowManager | 管理窗口与显示 |
input_method | InputMethodManagerService | IInputMethodManager | 输入法管理 |
power | PowerManagerService | IPowerManager | 电源管理 |
location | LocationManagerService | ILocationManager | 定位服务 |
vibrator | VibratorService | IVibratorService | 震动控制 |
alarm | AlarmManagerService | IAlarmManager | 定时任务 |
notification | NotificationManagerService | INotificationManager | 通知管理 |
telephony.registry | TelephonyRegistry | ITelephony | 电话服务 |
display | DisplayManagerService | IDisplayManager | 显示管理 |
sensorservice | SensorService | ISensorManager | 传感器管理 |
audio | AudioService | IAudioService | 音频管理 |
batterystats | BatteryStatsService | IBatteryStats | 电池统计 |
cameraservice | CameraService | ICameraService | 相机管理 |
accessibility | AccessibilityManagerService | IAccessibilityManager | 无障碍服务 |
job_scheduler | JobSchedulerService | IJobScheduler | 后台任务调度 |
dropbox | DropBoxManagerService | IDropBoxManager | 日志收集 |
account | AccountManagerService | IAccountManager | 账户管理 |
如需进一步了解某个服务的具体使用方法或源码实现,可以参考 Android 开源项目(AOSP)中的以下路径:
frameworks/base/services/core/java/com/android/server/
或查看对应的 AIDL 接口文件,如:
frameworks/base/core/java/android/app/IActivityManager.aidl
frameworks/base/core/java/android/content/pm/IPackageManager.aidl