最近在学习Activity的组件过程,在这里把过程写一遍,当作记忆,如果想看时序图或者源码的,可以网上另找。
Laucher组件启动程序中MainActivity组件的过程:
(1)Laucher组件向ActivityManagerService发送一个启动MainActivity组件的进程间通信。
(2)ActivityManagerService首先将要启动的MainActivity组件的intent信息保存起来,同时向Laucher组件发送一个进入中止状态的进程间通信请求。
(3)Laucher组件进入到中止状态后,就会向ActivityManagerService发送一个已进入中止状态的进程间通信请求,ActivityMangerService在收到中止状态的进程间通信请求后,把消息移除,并在mHistroy里同步Laucher组件的状态,接着就可以执行启动MainActivity组件的操作。
(4)ActivityManagerService发现用来运行MainActivity组件的进程不存在就会先启动一个新的应用进程。
(5)新的进程启动完后,就向AcitvityManagerService发送一个进程启动完成的请求。
(6)ActivityManagerService将第2步保存下来的intent消息发给刚启动的进程,以便启动MainActivity组件,这里还涉及到activity组件在ActivityManagerService的状态保存。
MainActivity组件启动同个进程下的activity组件的过程如下:
(1)MainActivity组件向ActivityManagerService发送一个启动Activity组件的进程间通信。
(2)ActivityManagerService首先将要启动的Activity组件的intent信息保存起来,同时向MainActivity组件发送一个进入中止状态的进程间通信请求。
(3)MainActivity组件进入到中止状态后,就会向ActivityManagerService发送一个已进入中止状态的进程间通信请求,ActivityMangerService在收到中止状态的进程间通信请求后,把消息移除,并在mHistroy里同步MainActivity组件的状态,接着就可以执行启动Activity组件的操作。
(4)ActivityManagerService将第2步保存下来的intent消息发给已经存在启动的进程,以便启动Activity组件,这里还涉及到MainActivity组件在ActivityManagerService的状态保存。
版权声明:本文为博主原创文章,未经博主允许不得转载。