1.系统服务 可以分为三种类型:
- BootStrapServices 引导服务类型
- CoreServices 核心服务类型
- OtherServices 其他服务类型
启动 系统服务:
系统服务由SystemServer.java类启动,在该类的main主函数中会调用run()方法,run()方法首先实例化SystemServiceManager对象,再利用LocalService.addService()
方法将这个管理器对象添加到LocalService中。
// Create the system service manager.
mSystemServiceManager = new SystemServiceManager(mSystemContext);
LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);
然后依次调用以下三个函数来启动各系统服务:
public final class SystemServer {
...
public static void main(String[] args) {
new SystemServer().run();
}
...
private void run() {
...
Looper.prepareMainLooper();
...
startBootstrapServices(); // 引导类服务
startCoreServices(); // 核心类服务
startOtherServices();// 其他类服务
...
Looper.loop();
...
}
...
}
具体是通过mSystemServiceManager的startService()方法来启动各服务,如AMS服务的启动:
mActivityManagerService = mSystemServiceManager.startService(
ActivityManagerService.Lifecycle.class).getService();
1.2. BootStrapServices 引导服务
- ActivityManagerService【管理整个框架中任务、进程管理, Intent解析等的核心实现,管理四大组建的生命周期】
- PowerManagerService【电源管理服务】
- LightsService【光感服务】
- DisplayManagerService【展示管理服务】
- PackageManagerService【包管理服务】
- UserManagerService【用户管理服务】
- SensorService【传感器服务】
1.3. CoreServices 核心服务
- BatteryService【电池管理服务】
- UsageStatsService【用户使用状态服务】
- WebViewUpdateService【WebView更新服务】
1.4. OtherServices其他服务
- SchedulingPolicyService【调度策略服务】基于Linux设置线程的调度策略和优先级。调度策略或优先级。
- TelecomLoaderService【电信加载服务】
- TelephonyRegistry【提供电话注册、管理服务,可以获取电话的链接状态、信号强度等等服务】
- CameraService【相机服务】
- AccountManagerService【账户管理服务,需先于- ContentService启动】
- ContentService【内容服务,主要是数据库等提供解决方法的服务】
- VibratorService【震动服务】
- ConsumerIrService【远程控制服务,通过红外等控制周围的设备(例如电视等)】
- AlarmManagerService【闹钟、定时器服务】
- InputManagerService【处理分发事件,从- WindowManagerService独立出来的】
- WindowManagerService【窗口管理服务】
- BluetoothService【蓝牙服务】
- InputMethodManagerService【输入法服务】
- AccessibilityManagerService【辅助管理程序截获所有的用户输入,并根据这些输入给用户一些额外的反馈,起到辅助的效果,View的点击、焦点等事件分发管理服务】
- MountService【磁盘加载服务程序,NotificationManagerService依赖这个服务】
- UiModeManagerService【夜间模式和行车模式管理服务】
- LockSettingsService【锁屏设置服务】
- PersistentDataBlockService【永久数据存储分区服务】
- DeviceIdleController【设备idle状态控制器】
- DevicePolicyManagerService【设备策略管理服务】
- StatusBarManagerService【状态栏管理服务】
- ClipboardService【剪贴板服务】
- NetworkManagementService【网络管理服务】
- TextServicesManagerService【文本服务】
- NetworkScoreService【android.net.NetworkScoreManager的备份服务】
- NetworkStatsService【网络状态服务】
- NetworkPolicyManagerService【网络策略管理服务】
- WIFI_P2P_SERVICE【】
- WIFI_SERVICE【】
- WifiScanningService【】
- RttService【】
- ETHERNET_SERVICE【】
- ConnectivityService【连接服务】
- NsdService【网络服务搜索】
- UPDATE_LOCK_SERVICE【】
- NotificationManagerService【广播管理服务】
- DeviceStorageMonitorService【设备存储模拟器服务】
- LocationManagerService【GPS、定位等位置服务】
- CountryDetectorService【检测所在国家服务】
- SearchManagerService【搜素管理服务 】
- DropBoxManagerService【系统运行时日志的存储与管理服务】
- WallpaperManagerService【壁纸管理服务】
- AudioService【音频服务】
- DockObserver【管理座子的插入与拔出】
- MidiManagerService【乐器数字接口管理服务】
- UsbService【USB服务】
- SerialService【串口设备服务】
- TwilightService【夜间模式服务】
- JobSchedulerService【工作调度服务】
2.系统服务如何为应用层提供服务
app应用通过context.getSystemService("service的注册名称")
获取到对应Manager管理对象,这个对象最为服务的代理对象通过AIDL进程间通信,实现App调用系统Framework层的各种服务;
具体如下图:
网友评论