成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android系統的心臟,SystemServer進程及各系統服務之間的關系

移動開發 Android
SystemService是framework的一些對應功能的服務,供其他模塊和APP來調用。這些服務通常與特定的功能或模塊相關,例如BatteryService(用于獲取電池屬性、充電狀態、百分比等)、PowerManagerService(控制休眠、喚醒等)以及TvInputManagerService(用于創建和釋放會話等)。

SystemServer

SystemServer是Android系統中的一個重要進程,是zygote fork的第一個進程,負責啟動和管理系統中的各種服務。在Android系統中,SystemServer進程的名稱為"system_server"。

SystemServer進程啟動后,會加載SystemServer類并執行其main函數,main函數是SystemServer的入口點,負責啟動和初始化各種系統服務。在這個過程中,SystemServer會創建一個Looper和一個Handler,用于在主線程中處理消息和運行任務。Looper是Android事件循環的一部分,負責在主線程中接收和分發消息,Handler則用于發送和處理消息。

SystemServer創建并初始化的系統服務包括ActivityManagerService(AMS)、PackageManagerService(PMS)、WindowManagerService(WMS)等。這些服務在Android系統中扮演著重要的角色,例如AMS負責管理應用程序的生命周期和活動狀態,PMS負責管理應用程序包的安裝和卸載,WMS則負責管理窗口的創建、顯示和更新等。

在SystemServer的main函數中,還會啟動其他各種系統服務,這些服務通過SystemServiceManager進行管理和控制。SystemServer進程會一直運行,處理來自各種系統服務的消息,確保系統的正常運行和穩定性。

ServiceManager

ServiceManager是Android系統中的一個重要守護進程,負責管理系統服務的注冊、查找和啟動。

  1. 「作用」:

提供服務注冊和查找:ServiceManager充當了一個中央注冊表的角色,允許應用程序和系統組件將自己注冊為服務,并提供一個唯一的服務名稱。其他應用程序可以通過ServiceManager查找并獲取已注冊的服務,從而實現進程間通信。

啟動和管理系統進程:ServiceManager還負責啟動和管理一些重要的系統進程,例如系統服務(如Telephony服務、Media服務等),以及其他一些重要的系統組件。

實現Binder機制:Android系統采用Binder作為進程間通信(IPC)的機制,ServiceManager是Binder通信的關鍵組件之一。

  1. 「權限」:

ServiceManager的訪問權限較高,一般只有系統級應用或者具有系統權限的應用程序才能夠使用ServiceManager進行服務的注冊和查詢。

  1. 「與Binder的關系」:

ServiceManager是Binder的守護進程,在Android上如果ServiceManager掛掉,所有采用Binder通信的進程服務都會受到影響。ServiceManager本身也是一個Binder服務,其handle固定為0。應用程序相要通過Binder向一個service發送數據,必須先通過ServiceManager獲取該service的handle,然后才能通過binder驅動與service通信。

  1. 「啟動流程」:

在Android系統的啟動過程中,SystemServer進程在啟動時會啟動ServiceManager,并將各種系統服務注冊到ServiceManager中。

protected final void publishBinderService(String name, IBinder service, boolean allowIsolated) {
    ServiceManager.addService(name, service, allowIsolated);
}

SystemServiceManager

SystemServiceManager是Android系統中用于管理系統服務的一個類。負責管理所有注冊的系統級別服務,并在需要時啟動和停止它們。例如,當SystemServer進程啟動時,SystemServiceManager會注冊PackageManagerService、WindowManagerService、ActivityManagerService等服務,并在需要時啟動。

@SuppressWarnings("unchecked")
public <T extends SystemService> T startService(Class<T> serviceClass) {
    final String name = serviceClass.getName();
    Slog.i(TAG, "Starting " + name);
 
    // Create the service.
    if (!SystemService.class.isAssignableFrom(serviceClass)) {
        throw new RuntimeException("Failed to create " + name
                + ": service must extend " + SystemService.class.getName());
    }
    final T service;
    try {
        Constructor<T> constructor = serviceClass.getConstructor(Context.class);
        service = constructor.newInstance(mContext);
    } catch (InstantiationException ex) {
        throw new RuntimeException("Failed to create service " + name
                + ": service could not be instantiated", ex);
    } catch (IllegalAccessException ex) {
        throw new RuntimeException("Failed to create service " + name
                + ": service must have a public constructor with a Context argument", ex);
    } catch (NoSuchMethodException ex) {
        throw new RuntimeException("Failed to create service " + name
                + ": service must have a public constructor with a Context argument", ex);
    } catch (InvocationTargetException ex) {
        throw new RuntimeException("Failed to create service " + name
                + ": service constructor threw an exception", ex);
    }

    // Register it.
    mServices.add(service);
 
    // Start it.
    try {
        service.onStart();
    } catch (RuntimeException ex) {
        throw new RuntimeException("Failed to start service " + name
                + ": onStart threw an exception", ex);
    }
    return service;
}

SystemServiceManager通過調用registerService函數來注冊系統服務,并可以通過startService、stopService函數來啟動或停止這些服務。當系統不再需要某個服務時,SystemServiceManager也會負責將其停止并卸載。

SystemServiceManager是Android系統內部使用的組件,通常不需要開發者直接與其交互。

SystemService

SystemService是framework的一些對應功能的服務,供其他模塊和APP來調用。這些服務通常與特定的功能或模塊相關,例如BatteryService(用于獲取電池屬性、充電狀態、百分比等)、PowerManagerService(控制休眠、喚醒等)以及TvInputManagerService(用于創建和釋放會話等)。

SystemService的使用相對簡單,通過context.getSystemService(@NonNull Class<T> serviceClass)或Object getSystemService(@ServiceName @NonNull String name)方法獲取一個manager對象,然后調用SystemService里面的方法。

SystemService是Android系統內部使用的組件,開發者在開發Android應用程序時,通常是通過系統提供的API來與系統服務進行交互的,而不是直接操作SystemService。

val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager

責任編輯:武曉燕 來源: 沐雨花飛蝶
相關推薦

2021-01-08 08:21:02

Android

2010-05-10 19:03:00

Unix文件

2010-02-07 10:46:50

Android系統

2016-10-28 21:30:00

AndroidJava進程

2018-07-06 14:00:55

Linux進程線程

2018-05-31 10:57:31

Linux系統進程線程

2010-03-04 16:08:21

Android系統平臺

2010-04-12 10:01:43

Windows 7運行速度

2023-11-03 08:22:09

Android系統算法

2011-08-19 09:33:31

windowsxp系統進程系統服務

2009-06-25 14:46:50

JDKJREJVM

2012-07-03 10:22:42

服務器虛擬化

2018-07-31 09:38:34

服務器工作站關系

2017-09-11 15:35:43

AndroidInput系統框架

2017-08-06 00:05:18

進程通信開發

2020-04-26 17:18:11

物聯網醫療技術

2018-06-29 09:20:13

2014-09-11 17:02:41

綜合布線

2010-05-06 16:15:04

Unix系統進程

2010-05-11 19:16:03

Unix系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av官网在线 | 国产日韩欧美在线 | 国产精品永久久久久久久www | 97人人澡人人爽91综合色 | 国产小视频在线看 | 亚洲欧美日韩在线一区二区 | 在线视频中文字幕 | 亚洲高清中文字幕 | 日韩在线精品 | 男人阁久久 | 在线免费国产 | 亚洲国产欧美在线人成 | 综合自拍| 中文在线一区 | 日韩一区二区福利 | 天天躁人人躁人人躁狂躁 | 亚洲精品一 | 久久国产婷婷国产香蕉 | 九九热免费视频在线观看 | 精品国产乱码久久久久久丨区2区 | 国产精品xxxx | 精品99在线| 日日干夜夜操 | 一区二区成人在线 | 亚洲国产精品va在线看黑人 | 日韩欧美二区 | 欧美精品一区二区三区在线播放 | 少妇精品亚洲一区二区成人 | 99精品久久 | 中文字幕精品一区 | 国产一区不卡 | 性高朝久久久久久久3小时 av一区二区三区四区 | 秋霞影院一区二区 | 欧美在线视频一区二区 | 日韩精品免费一区二区在线观看 | 成人啊啊啊| 亚洲精品专区 | 色播久久 | 国产精品一区二区在线 | 国产a级毛片 | 欧美女优在线观看 |