Android应用程序进程启动过程的源代码分析(七)

移动开发 Android
由于在前面的Step 3中,指定了"--runtime-init"参数,表示要为新创建的进程初始化运行时库,因此,这里的parseArgs.runtimeInit值为true,于是就继续执行RuntimeInit.zygoteInit进一步处理了。

从peers.get(index)得到的是一个ZygoteConnection对象,表示一个Socket连接,接下来就是调用ZygoteConnection.runOnce函数进一步处理了。

上文调用了handleChildProc函数。

Step 7. ZygoteConnection.handleChildProc

这个函数定义在frameworks/base/core/java/com/android/internal/os/ZygoteConnection.java文件中:

  1. [java] view plaincopyclass ZygoteConnection { 
  2.   ...... 
  3.   private void handleChildProc(Arguments parsedArgs, 
  4.   FileDescriptor[] descriptors, PrintStream newStderr) 
  5.   throws ZygoteInit.MethodAndArgsCaller { 
  6.   ...... 
  7.   if (parsedArgs.runtimeInit) { 
  8.   RuntimeInit.zygoteInit(parsedArgs.remainingArgs); 
  9.   } else { 
  10.   ...... 
  11.   } 
  12.   } 
  13.   ...... 
  14.   } 

由于在前面的Step 3中,指定了"--runtime-init"参数,表示要为新创建的进程初始化运行时库,因此,这里的parseArgs.runtimeInit值为true,于是就继续执行RuntimeInit.zygoteInit进一步处理了。

责任编辑:闫佳明 来源: bbs.9ria
相关推荐

2014-06-20 11:24:34

Android应用程序进程启动

2014-06-20 11:09:35

Android应用程序进程启动

2014-06-19 14:25:04

Android应用程序进程启动

2014-06-20 11:05:56

Android应用程序进程启动

2014-06-19 14:59:40

Android应用程序进程启动

2014-06-19 14:30:28

Android应用程序进程启动

2014-06-19 14:54:11

Android应用程序进程启动

2012-02-20 14:47:08

JavaPlay

2014-05-22 15:00:16

Android消息处理机制Looper

2011-08-17 16:16:29

iPhone应用程序启动过程

2011-07-28 10:34:38

Cocoa 程序 启动

2014-06-23 10:31:09

Android启动过程

2011-06-28 13:27:13

ARM Linux

2014-07-31 10:06:01

谷歌Google应用

2012-08-16 09:07:57

Erlang

2018-03-13 13:00:03

Linux运维启动分析

2022-08-29 17:34:05

鸿蒙操作系统

2010-12-13 11:40:17

Android应用程序

2014-05-22 15:45:58

Android消息处理机制Looper

2009-08-14 17:57:43

ASP.NET MVC
点赞
收藏

51CTO技术栈公众号