[CSDN]Android应用程序进程启动过程的源代码分析

[url]http://blog.csdn.net/luoshengyang/article/details/6747696[/url]

简要整理:


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驱动程序交互

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值