首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android应用程序进程启动过程(后篇)

AndroidRuntime.cpp的JNINativeMethod数组中我们得知它对应的函数是com_android_internal_os_RuntimeInit_nativeZygoteInit...在Android系统启动流程(二)解析Zygote进程这篇文章我们得知AppRuntime继承AndroidRuntime,AppRuntime创建时就会调用AndroidRuntime的构造函数,gCurRuntime...处会将调用IPCThreadState的joinThreadPool函数,将当前线程注册到Binder驱动程序中,这样我们创建的线程就加入了Binder线程池中,这样新创建的应用程序进程就支持Binder进程通信了...invokeStaticMain函数在上篇已经讲过,这里不再赘述,主要是看最后一行,会抛出一个MethodAndArgsCaller异常,这个异常会被ZygoteInit的main函数捕获,如下所示。...在注释1处调用ActivityThread的main函数,代码如下所示。 frameworks/base/core/java/android/app/ActivityThread.java ?

69970

Android开发高级系列】Android多进程专题

1 进程启动过程 Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程通信机制;这两个特点都是在进程的初始化过程中实现的...= cl.getMethod("main", new Class[] { String[].class});         函数最后并没有直接调用这个静态成员函数main,而是通过抛出一个异常ZygoteInit.MethodAndArgsCaller...,然后让ZygoteInit.main函数在捕获这个异常的时候再调用android.app.ActivityThread类的main函数。...我们看看ZygoteInit.main函数在捕获到这个异常的时候做了什么事: public class ZygoteInit {     .........,由此可见,Binder进程通信机制在Android系统中是何等的重要,而且是无处不在,想进一步学习Android系统的Binder进程通信机制,请参考Android进程通信(IPC)机制Binder

26720
领券