根Activity启动过程
Launcher启动MainActivity的过程主要分为6个步骤:
一、Launcher向ActivityManagerService发送一个启动MainActivity的进程间通信请求;
二、ActivityManagerService首先将MainActivity的信息保存下来,再向Launcher组件发送一个进入中止状态的进程间通信请求;
三、Launcher进入中止状态后,向ActivityManagerService发送一个已经进入中止状态的进程间通信请求;
四、ActivityManagerService启动一个新的应用程序进程;
五、新的进程启动完毕,ActivityManagerService发送一个启动完成的进程间通信请求到ActivityThread;
六、ActivityThread将MainActivity组件启动起来。
子Activity在进程内启动过程
一、MainActivity向ActivityManagerService发送一个启动SubActivity进程间通信请求;
二、ActivityManagerService保存SubActivity组件信息,再向MainActivity发送进入中止状态的进程间通信请求;
三、MainActivity进入中止状态,并将状态返回给ActivityManagerService;
四、ActivityManagerService将SubActivity保存的组件发送给应用程序,将SubActivity启动起来。
一个Activity组件是在已经存在的应用程序进程中启动,还是在新的应用程序进程中启动,取决于以下两个因素:
Activity组件的的用户ID;
Activity组件的android:process属性。
Task用来将一系列相关的Activity组件整合到一起,共同完成一个业务功能。这些Activity可以在不同的进程中,这使得Activity组件的重用性强。
以上内容阅读《Android系统源代码情景分析》第7章《Activity组件的启动过程》总结。