Android應用程序進程啟動過程的源代碼分析(七)
從peers.get(index)得到的是一個ZygoteConnection對象,表示一個Socket連接,接下來就是調用ZygoteConnection.runOnce函數進一步處理了。
上文調用了handleChildProc函數。
Step 7. ZygoteConnection.handleChildProc
這個函數定義在frameworks/base/core/java/com/android/internal/os/ZygoteConnection.java文件中:
- [java] view plaincopyclass ZygoteConnection {
- ......
- private void handleChildProc(Arguments parsedArgs,
- FileDescriptor[] descriptors, PrintStream newStderr)
- throws ZygoteInit.MethodAndArgsCaller {
- ......
- if (parsedArgs.runtimeInit) {
- RuntimeInit.zygoteInit(parsedArgs.remainingArgs);
- } else {
- ......
- }
- }
- ......
- }
由于在前面的Step 3中,指定了"--runtime-init"參數,表示要為新創建的進程初始化運行時庫,因此,這里的parseArgs.runtimeInit值為true,于是就繼續執行RuntimeInit.zygoteInit進一步處理了。