android1

写在之前的话:

因为之前有段时间不上班了,近期决定找工作,需要重新复习下,涉及到的代码是android 9.

android系统流程:BootLoader-->linux os-->init-->zygote-->SystemServer

A、init进程会创建挂载文件、初始化一系列的属性、启动zygote进程

B、zygote进程创建DVM、ART,fork各种进程,此处最后会通过JNI调用ZygoteInit的main方法,从native层进入java层

public static void main(String argv[]) {
    ………………
    ZygoteServer zygoteServer = new ZygoteServer();
    //TODO 创建Service Socket
    zygoteServer.registerServerSocketFromEnv(socketName);
    //TODO 预加载类和资源
    preload(bootTimingsTraceLog);
    //TODO fork SystemServer进程
    Runnable r = forkSystemServer(abiList, socketName, zygoteServer);
    //TODO 通过runSelectLoop方法等待AMS的请求来创建新的应用程序进程
    caller = zygoteServer.runSelectLoop(abiList);
    }
    private static Runnable forkSystemServer(String abiList, String socketName, ZygoteServer zygoteServer){
        //TODO 关闭zygote
        zygoteServer.closeServerSocket();
        //TODO 启动SystemServer进程
        return handleSystemServerProcess(parsedArgs);
        }
    }
    private static Runnable handleSystemServerProcess(ZygoteConnection.Arguments parsedArgs){
        //TODO 创建PathClassLoader
        cl=createPathClassLoader(systemServerClasspath,parsedArgs.targetSdkVersion);
        return ZygoteInit.zygoteInit(parsedArgs.targetSdkVersion,parsedArgs.remainingArgs,cl);
        }

    public static final Runnable zygoteInit(int targetSdkVersion, String[] argv, ClassLoader classLoader) {
        //TODO native层启动Binder,就可以用Binder进行通信了
        ZygoteInit.nativeZygoteInit();
        //TODO 启动SystemServer……………………
        return RuntimeInit.applicationInit(targetSdkVersion, argv, classLoader);
        }

C、SystemServer启动AMS、WMS、PkMS等系统服务

        private void run(){
            //TODO Prepare the main looper thread (this thread).
            Looper.prepareMainLooper();
            System.loadLibrary("android_servers");//TODO 加载动态库
            //TODO Create the system service manager.
            mSystemServiceManager = new SystemServiceManager(mSystemContext);
            //TODO 启动各种服务
            startBootstrapServices();
            startCoreServices();
            startOtherServices();
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值