如上图,我们其实可以从连接或者绑定的角度(连接或者绑定的意思就是两个对象互相持有引用),即一个根activity的启动过程其实就是App进程与AMS的连接与绑定,而现在的已知条件有三个
- Launcher与AMS绑定
- AMS与Zygote绑定
- Zygote可以创建App进程
所以答案就很简单了通过传递原理,Launcher->AMS->Zygote->App,最后APP其实可以拿到AMS的引用了类似TCP连接我们就知道了(地址:端口)了,然后就可以建立连接了。连接建立后AMS便可以通知APP进程正式启动activity