图形系统:简简单单学习WindowManagerService的启动流程

文章详细阐述了Android系统中,从SystemServer进程开始,如何通过Zygotefork自身创建SystemServer,进而启动SystemServiceManager,特别是详细分析了WindowManagerService(WMS)的创建过程,包括其在DisplayThread中的执行以及与InputManagerService的交互。整个流程涉及到了Android系统服务的启动和线程间的协同工作。

作者:新小梦

在系统启动流程中,Zygote进程通过fork自己来创建SystemServer进程。SystemServer进程的主要职责之一就是创建SystemServiceManger,使自己成为服务的注册中心,并启动三种不同类型的服务:引导服务、核心服务、其他服务。

WMS被划分到其他服务。我们以SystemServer的main函数为入口来分析WMS的启动流程。

1、SystemServer.main

public static void main(String[] args) {
    new SystemServer().run();
}

2、SystemServer.run

如下所见,SystemServer先加载android_servers动态库,创建SystemServiceManager对象,将服务划分为三种类型的服务引导服务、核心服务、其他服务。

private void run() {

    // 初始化本地服务
    System.loadLibrary("android_servers");
	...
    //创建系统服务管理
    mSystemServiceManager = new SystemServiceManager(mSystemContext);
	...
    //启动三种类型的服务
    try {
        startBootstrapServices(t);
        startCoreServices(t);
        startOtherServices(t);
    } catch (Throwable ex) {
        ...
    } finally {
        ...
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值