前序

2020-03-31  本文已影响0人  momxmo

1.系统服务 可以分为三种类型:

 // 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 引导服务

1.3. CoreServices 核心服务

1.4. OtherServices其他服务

2.系统服务如何为应用层提供服务

app应用通过context.getSystemService("service的注册名称")获取到对应Manager管理对象,这个对象最为服务的代理对象通过AIDL进程间通信,实现App调用系统Framework层的各种服务;
具体如下图:

image.png
上一篇下一篇

猜你喜欢

热点阅读