创建应用程序

1.ActivityManagerService发送创建请求

图片发自App

图片发自App

图片发自App

startViaZygote函数通过函数zygoteSendArgsAndGetResult()调用Zygote进程创建一个指定的应用程序。

图片发自App

图片发自App

2.Zygote进程接收创建新应用程序的请求

图片发自App

图片发自App

图片发自App

图片发自App

图片发自App

在上述代码中,当创建一个进程的子进程时,如果返回0,则表示在新创建的进程中执行。此时需要调用函数handleChildProc()来启动这个子进程,并在该函数中调用zygoteInit()在新创建的应用程序进程中初始化运行库,这样便可以启动一个binder线程池。

当创建新应用程序进程完毕以后,会调用函数invokeStaticMain()将类ActivityThread的函数main()设置为新程序的入口函数。当使用函数main()时,会在当前程序的进程中建立一个信息循环。

你可能感兴趣的:(创建应用程序)