Zygote

From

  • init process
  • app_process

Resources

IPC

  • UNIX domain socket

Steps

  • app_process.main
    • 创建一个AppRuntime变量
  • AndroidRuntime.start
    • 启动Android系统运行时库
    • Work
      • 调用函数startVM启动虚拟机
      • 调用函数startReg注册JNI方法
      • 调用了com.android.internal.os.ZygoteInit类的main函数
  • ZygoteInit.main
    • 调用registerZygoteSocket函数创建了一个socket接口,用来和ActivityManagerService通讯
    • 调用startSystemServer函数来启动SystemServer组件
    • 调用runSelectLoopMode函数进入一个无限循环在前面创建的socket接口上等待ActivityManagerService请求创建新的应用程序进程
  • ZygoteInit.registerZygoteSocket
  • ZygoteInit.startSystemServer
  • ZygoteInit.handleSystemServerProcess
    • SystemServer不需要socket通信,关闭socket
  • RuntimeInit.zygoteInit
    • 调用zygoteInitNative函数来执行一个Binder进程间通信机制的初始化工作
    • 调用上面 传进来的com.android.server.SystemServer类的main函数
  • RuntimeInit.zygoteInitNative
  • SystemServer.main
  • ZygoteInit.runSelectLoopMode


创建@

2012-12-13

最后修改@

2014-01-03

相同类目/Categories