Zygote

zygote 孵化器是 Android 应用进程的模板,通过其 fork 出来。 Zygote初始化最后进入 select 循环, 等待客户端的请求 fork 应用进程。

Android Zygote Fork_第1张图片

frameworks/base/core/java/com/android/internal/os/ZygoteServer.java

Runnable runSelectLoop(String abiList) {    ......    while(true) {        StructPollfd[] pollFds = new StructPollfd[fds.size()];        ......        try {            Os.poll(pollFds, -1);        }        for (int i = pollFds.length -1 ; i >= 0; i--) {            if ((pollFds[i].revents & POLLIN) == 0) {                continue;            }            if (i == 0) {                ZygoteConnection newPeer = acceptCommandPeer(abiList);                peers.add(newPeer);                fds.add(newPeer.getFileDescriptor());            } else {                ZygoteConnection connection = peers.get(i);                final Runnable command = connection.processOneCommand(this);                return command;                ......            }        }    }}

frameworks/base/core/java/com/android/internal/os/ZygoteConnection.java

Runnable processOneCommand(ZygoteServer zygoteServer) {    ......    pid = Zygote.forkAndSpecialize(...);    try {        if (pid == 0) {            // in child            ......            return handleChildProc(...);        } else {            // In the parent            handleParentProc(...)            return null;        }    }}

更多相关文章

  1. IPC进程间通信
  2. [置顶] Android进程间通信AIDL的使用分析
  3. android后台进程隐藏手段
  4. android kernel 初始化 1

随机推荐

  1. Android跨进程通信-IPC初探(三) - 使用AI
  2. cocos2dx通过Jni调用Android的Java层代码
  3. android load 本地 html 页面
  4. 新建android project和其配置文件的基本
  5. Android自定义动画框架让View实现Path动
  6. Mstar虚拟按键触摸屏驱动(芯片msg2133,按键
  7. Android绘图之绘制太极图
  8. 查询能够响应某一Intent的所有Activity
  9. android日期选择器,从底部弹出的日期选择
  10. Androidstudio开发button按钮的操作以及