[CSDN]Android应用程序进程启动过程的源代码分析
16lz
2021-01-23
http://blog.csdn.net/luoshengyang/article/details/6747696
简要整理:
简要整理:
ActivityManagerService.java.startProcessLocked()(此方法本身在运行在SystemService进程中) |Process.java.start() | 通过localSocket发生命令(参数"android.app.ActivityThread") 至native的Zygote进程(Zygote进程中ZygoteInit.java.runSelectLoopMode()无限循环侦听socket请求) | 收到请求后得到一个socket连接ZygoteConnection.java对象,并执行此对象的runOnce方法 | fork()一个子进程,至此,新的应用程序进程诞生,不过后面还有很多初始话的工作要做 | RuntimeInit.java.zygoteInit() | {RuntimeInit.java.zygoteInitNative(), RuntimeInit.java.invokeStaticMain()} | | AndroidRuntime.cpp.onZygoteInit() 先通过异常清理堆栈 | | app_main.cpp.AppRuntime.onZygoteInit() ZygoteInit.java.main()捕获异常,反射android.app.ActivityThread.main() | | ProcessState.cpp.startThreadPool() ActivityThread.java.main()消息循环(等待启动Activity或者Service了) | ProcessState.cpp.spawnPooledThread() | ProcessState.cpp.PoolThread.threadLoop() | IPCThreadState.cpp.joinThreadPool()#此处为无限循环 | IPCThreadState.cpp.talkWithDriver()#与Binder驱动程序交互
更多相关文章
- Android 获取Gmail邮箱地址方法
- ubuntu的android studio调试小米手机的方法
- android 布局之滑动探究 scrollTo 和 scrollBy 方法使用说明
- Android 自定义view 和 onMeasure方法介绍
- Android延时执行调用的几种方法
- Android Studio 导.so文件简单、高效的方法
- Android中跨进程通信方式之使用AIDL进阶篇
- android 几个工具方法
- Android 判断当前设备是手机还是平板的最有效的方法