前序

作者: momxmo | 来源:发表于2020-03-31 12:11 被阅读0次

    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层的各种服务;
    具体如下图:

    image.png

    相关文章

      网友评论

          本文标题:前序

          本文链接:https://www.haomeiwen.com/subject/gfkwuhtx.html