美文网首页Android系统源码学习
Zygote进程自身的启动

Zygote进程自身的启动

作者: 覆水无言 | 来源:发表于2019-12-16 12:42 被阅读0次

android源码学习目录

背景

从上文中我们知道Zygote进程是怎样启动的, 这里分析Android Zygote进程main函数都做了什么工作。

1.启动入口

 public static void main(String argv[]) {
        .....
            
            //创建一个server端的socket, name为zynote
            zygoteServer.registerServerSocket(socketName);
            // In some configurations, we avoid preloading resources and classes eagerly.
            // In such cases, we will preload things prior to our first fork.
            if (!enableLazyPreload) { 
                ....
                preload(bootTimingsTraceLog);  //预加载类好资源 
                ....
            } else {
                Zygote.resetNicePriority();
            }

            ....

            if (startSystemServer) {
                startSystemServer(abiList, socketName, zygoteServer);  //启动SystemServer进程。
            }

            Log.i(TAG, "Accepting command socket connections");
             //开始等待socket命令请求,也就是ActivityManagerService请求
            zygoteServer.runSelectLoop(abiList);  

            zygoteServer.closeServerSocket();
        } catch (Zygote.MethodAndArgsCaller caller) {
            caller.run();
        } catch (Throwable ex) {
            Log.e(TAG, "System zygote died with exception", ex);
            zygoteServer.closeServerSocket();
            throw ex;
        }
    }

zygote进程main函数比较长,但它的主要工作可以总结为

  • 创建一个server端socket
  • 预加载类和资源
  • 启动SystemServer进程
  • 启动server端socket的监听,等待ActivityManagerService的请求。

这里我们要了解,zygote是一个孵化器进程,作为孵化器进程它自己最主要的工作就是创建好自身的环境为以后孵化进程做准备,在一个就是等待孵化请求,也就是这个server的socket接受请求,来孵化需要的进程。

相关文章

  • Android 启动相关类

    Zygote进程Zygote进程启动之后,调用startSystemServer会启动SystemServer进程...

  • Android 应用启动流程 | Activity 启动流程

    Android 系统启动流程启动 init 进程 , init 进程会启动 Zygote 进程Zygote 进程会...

  • Zygote进程自身的启动

    android源码学习目录 背景 从上文中我们知道Zygote进程是怎样启动的, 这里分析Android Zygo...

  • Android系统流程 v1.3

    Zygote的启动过程 1.系统启动init进程时会启动Zygote进程(负责Android运行时进程和应用进程的...

  • APP启动流程(一)Launcher到ActivityTaskM

    前置知识 当Android系统启动时,首先会创建Zygote进程,Zygote进程启动后会fork若干其他的进程,...

  • 谈谈对Zygote的理解

    了解Zygote的作用 启动SystemServer 孵化应用进程 熟悉Zygote的启动流程 启动三段式 进程启...

  • Android Framework - ServiceManag

    前言 前面已经分析了 Zygote 进程的启动过程,在 Zygote 启动时,SystemServer 进程也顺带...

  • 2020-08-19

    Zygote进程: 1、创建AppRuntime,执行其start方法,启动Zygote进程。。2、创建JVM并为...

  • Activity启动摘要

    Linux内核启动init进程,init进程中会启动Zygote进程及ContextManager进程,Zygot...

  • zygote的理解

    谈一谈对Zygote的理解? Zygote的作用是什么? 启动三段式 Zygote的启动流程 Zygote进程是怎...

网友评论

    本文标题:Zygote进程自身的启动

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