Android(安卓)Zygote Fork
16lz
2021-12-04
Zygote
zygote 孵化器是 Android 应用进程的模板,通过其 fork 出来。 Zygote初始化最后进入 select 循环, 等待客户端的请求 fork 应用进程。
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; } }}
更多相关文章
- Android(安卓)Activity 属性介绍
- 面向忙碌开发者的 Android
- Android多媒体应用——ImageSwitcher
- 面向忙碌开发者的 Android
- android 启动流程
- Android初小试---一分钟傻瓜式打包
- Android开发中 AndroidManifest.xml配置之service,receiver标签配
- 享受Android应用程序的Java技术盛宴
- android 应用程序数据共享shareuserid篇+ContentResolver+Conten