Activity组件的启动过程

Activity是Android应用程序的四大组件之一,负责管理Android应用程序的用户界面。一个应用程序一般会包含若干个Activity组件,每个Activity组件负责一个用户界面的展现,它们可能运行在同一个进程中,也可能允许在不同的进程中。运行至不同进程中的Activity组件通过Binder进程间通信机制来协作完成应用程序的功能。

Activity组件的启动方式分为显示和隐示两种。对于显示启动的Activity组件来说,我们必须事先知道用来实现它们的类的名称;对于隐示启动的Activity组件来说,我们只需要知道它们的组件名称即可。隐示启动Activity组件可以减少Android应用程序组件间的依赖。


根Activity组件的启动过程:

由于根Activity组件代表了一个Android应用程序,因此,它一般是在一个新的进程中启动起来的。


在Android系统中,所有的Activity组件都保存在一个堆栈中,其中,后面启动的Activity组件位于前面启动的Activity组件的上面。用户在执行一个操作时,通常需要与一系列相关的Activity组件进行交互,这些相关的Activity组件在系统的Activity堆栈中用一个任务(Task)来描述。


系统的Activity组件堆栈有TasksRecord#2和TasksRecord#3 两个任务,其中,TasksRecord#2包含了一个Lancher组件,表示我们打开了应用程序Launcher.而任务TasksRecord#3包含了一个MainActivity组件,表示我们打开了应用程序Activity。


MainActivity组件是有Launcher组件来启动的,而Launcher组件又是通过Activity管理服务ActivityManagerService来启动MainActivity组件的。由于MainActivity组件,Launcher组件和ActivityManagerService是分别运行在不同的进程中的。因此MainActivity组件的启动过程就涉及到了三个进程。这三个进程是通过Binder进程间通信机制来完成MainActivty组件的启动过程。


Launcher组件启动MainActivity组件的过程如下:

1.Launcher组件向ActivityManagerService发送一个启动MainActivty组件的进程间通信请求。

2.ActivityManagerService首先将要启动的MainActivity组件的信息保存下来,然后再向Launcher组件发送一个进入终止状态的进程间通信请求。

3.Launcher组件进入到中止状态后,向ActivityManagerService发送一个已进入中止状态的进程间通信请求。

4.ActivityManagerService发现用来运行MainActivity组件的应用程序不存在,就会启动一个新的应用程序进程。

5.新的应用程序进程启动完成后,就会向ActivityManagerService发生一个启动完成的进程间通信请求。

6.ActivityManagerService将第二步保存下来的MainActivity组件的信息发送给第4步创建的应用程序进程,以便它可以将MainActivity组件启动起来。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值