Android8.1系统服务整理
本文基于Android8.1系统整理
本文根据SystemServer.java中的代码进行整理
一、系统服务startBootstrapServices
1、Installer服务 – 应该是和底层的installd打交道的服务,用于管理安装删除app的服务,需要在启动其他服务之前完成
2、 DeviceIdentifiersPolicyService – 直译过来是设备标识符策略服务,注释上说有些app需要访问设备标识,因此要在activity manager 之前启动这个服务。
3、ActivityManagerService –
4、PowerManagerService – 电源管理服务
5、RecoverySystemService – 在一些情况下可能会使用此服务重启系统
6、LightsService – 管理led灯或者背光服务
7、DisplayManagerService –
8、PackageManagerService
9、UserManagerService – 多用户管理
10、OverlayManagerService –
11、SensorService – 管理各种传感器的服务,是一个c层的服务,通过jni调用
二、核心服务startCoreServices – 其他必要的服务,但是没和启动服务纠缠在一起
1、DropBoxManagerService – 记录错误和日志
2、BatteryService – 电池管理服务,跟踪电池电量,需要LightService运行
3、UsageStatsService – 跟踪应用使用情况
4、WebViewUpdateService – Webview更新服务
三、其他服务
1、KeyChainSystemService – 好像是com.android.keychain的一个扩展,在android O以后用于处理应用删除时的清理动作。
2、SchedulingPolicyService – 调度策略管理,不知道是干啥用的
3、TelecomLoaderService – 用于启动通讯服务的?
4、TelephonyRegistry
5、VibratorService – 振动器服务
6、AlarmManagerService – 系统定时运行服务
7、ConsumerIrService – 红外遥控管理服务
8、AccountManagerService
9、ContentService
10、Watchdog
11、InputManagerService
12、VrManagerService – vr管理服务
13、BluetoothService – 蓝牙服务
14、IpConnectivityMetrics – 不知道是干啥的
15、PinnerService
16、InputMethodManagerService – 接收屏幕开关、系统关闭对话框事件,启动、关闭输入法service,弹出选择输入法的对话框等等
17、AccessibilityManagerService
18、StorageManagerService – 存储管理服务
19、StorageStatsService – 磁盘统计服务
20、UiModeManagerService – 管理UI模式,汽车模式、电视模式、手表模式、黑夜模式等,adb shell dumpsys uimode
21、LockSettingsService – 管理多个用户的锁屏图案、锁屏密码等的服务
22、PersistentDataBlockService – 连续数据块服务,好像是工厂模式用的?
23、OemLockService
24、DeviceIdleController – 设备空闲状态控制,低功耗模式的运行就是基于这个服务
25、DevicePolicyManagerService – 设备策略服务
26、StatusBarManagerService – 状态栏服务
27、ClipboardService – 剪贴板服务
28、NetworkManagementService
29、TextServicesManagerService – 文本服务,主要是提供拼写检查服务
30、NetworkScoreService
31、NetworkStatsService – 网络统计服务,给其他系统服务使用,也可以使用adb shell dumpsys netstats查看
32、NetworkPolicyManagerService – 网络策略管理
33、WifiService – wifi服务
34、WifiScanningService – wifi扫描服务
35、com.android.server.wifi.RttService
36、WifiAwareService
37、WifiP2pService
38、LowpanService
39、EthernetService
40、ConnectivityService
41、NsdService
42、UpdateLockService
43、NotificationManagerService
44、DeviceStorageMonitorService
45、LocationManagerService – 位置管理服务
46、CountryDetectorService – 国家检测服务,类ComprehensiveCountryDetector.java,检测顺序:移动网络、位置、sim卡的国家、手机的位置
47、SearchManagerService
48、WallpaperManagerService – 壁纸管理服务
49、BroadcastRadioService – 收音机服务
50、DockObserver – ???
51、ThermalObserver – 用于监测温度变化,需要FEATURE_WATCH,监测体温的?
52、WiredAccessoryManager
53、MidiService – midi服务
54、UsbService – usb设备服务,管理所有USB相关的状态,包括host(UsbHostManager)和device(UsbDeviceManager)模式
55、SerialService – 串口服务
56、HardwarePropertiesManagerService
57、TwilightService – 根据用户的位置判断当前时间是否是夜间时间
58、NightDisplayService – 夜晚显示服务,黑夜模式
59、JobSchedulerService
60、SoundTriggerService
61、TrustManagerService
62、BackupManagerService
63、AppWidgetService
64、VoiceInteractionManagerService
65、GestureLauncherService
66、SensorNotificationService
67、ContextHubSystemService – 主要是为了启动ContextHubService
68、DiskStatsService – 磁盘统计服务,只是在使用adb shell dumpsys diskstats时被调用
69、timezone.RulesManagerService
70、NetworkTimeUpdateService
71、CommonTimeManagementService
72、EmergencyAffordanceService – 紧急呼叫服务,从 2017 年 1 月 1 日开始,在印度地区销售的所有移动设备都必须应印度电信部门 (DoT) 的要求提供紧急呼叫按钮。为响应这些监管要求,Android 包含了“提供紧急呼叫”功能的参考实现,以启用 Android 设备上的紧急呼叫按钮。此功能在 Android 8.0 和更高版本中默认启用,但较早版本中必须安装相应的补丁程序。目前,该功能专门针对在印度市场销售的设备;不过,鉴于该功能在印度境外无效,因此也可以在全球范围销售的所有设备上提供。
73、DreamManagerService – 屏保服务?
74、GraphicsStatsService – 用来汇总屏幕卡顿数据的,通过adb shell dumpsys graphicsstats调用查看汇总结果
75、CoverageService – JaCoCo相关服务,和coverage命令相对应,用于导出JaCoCo的输出文件
76、PrintManagerService – 打印管理服务
77、CompanionDeviceManagerService – 伙伴设备管理服务?
78、RestrictionsManagerService – 限制管理服务,好像是app可以通过manifest定义一些限制规则?
79、MediaSessionService – 多媒体会话服务,在多个进程中共享多媒体播放状态,https://developer.android.google.cn/reference/androidx/media2/session/MediaSessionService
80、HdmiControlService – hdmi服务,控制hdmi设备的显示?
81、TvInputManagerService – 电视输入服务
82、MediaResourceMonitorService – 不清楚有啥用
83、TvRemoteService – 电视摇控服务
84、MediaRouterService – 媒体路由服务,用于给实现了Google Cast的设备提供远程播放、远程控制音乐和视频服务,https://developer.android.google.cn/guide/topics/media/mediarouter
85、FingerprintService – 指纹服务
86、BackgroundDexOptService – dex后台优化服务,在packmanager中有调用
87、PruneInstantAppsJobService
88、ShortcutService – 快捷方式服务
89、LauncherAppsService – Launcher应用相关的服务
90、MediaProjectionManagerService – 媒体投影服务,可用于录屏或者屏幕投射
91、WearConnectivityService – 穿戴设备连接服务
92、WearDisplayService – 穿戴设备显示服务
93、WearLeftyService – 穿戴设备左撇子服务
94、WearTimeService – 穿戴设备时间服务
95、CameraServiceProxy
96、MmsServiceBroker – 彩信服务
97、AutofillManagerService – 自动填充服务,比如自动填充密码,看说明https://developer.android.google.cn/guide/topics/text/autofill
98、CarServiceHelperService
99、SystemUIService – SystemUi状态栏等
四、其他说明
1、线程是同步执行还是异步执行的?
根据代码看,大部分服务的启动是同步执行的,即启动完成一个服务才会启动后面的服务,因为后面的一些服务会引用到前面的服务,如下图:
但是也有一些服务是在子线程中处理的,可能是异步执行的
还要注意有个startBootPhase函数(还未查看此函数)
2、如何查看服务是否在进程中
这些服务通常是子线程中运行的,度娘说可以通过下面的指令查看子线程
ps -T -p 进程id
进程id是指system_server的进程id。
但是我用这个看不到子进程,使用下面的命令可以看到
ps -T -A|grep 进程id
Sorry, the comment form is closed at this time.