Android应用程序内部启动Activity过程(startActivity)的源代码分析

2014-11-24 11:10:55 · 作者: · 浏览: 1

我们先来看一下应用程序的配置文件AndroidManifest.xml,看看这两个Activity是如何配置的:


这里可以很清楚地看到,MainActivity被配置成了应用程序的默认Activity,而SubActivity可以通过名称“shy.luo.activity.subactivity”隐式地启动,我们来看一下src/shy/luo/activity/MainActivity.java文件的内容,可以清楚地看到SubActivity是如何隐式地启动的:


这里,首先创建一个名称为“shy.luo.activity.subactivity”的Intent,然后以这个Intent为参数,通过调用startActivity函数来实现隐式地启动SubActivity。



有了这些背景知识后,我们就来看一下SubActivity启动过程的序列图:



Step 1. Activity.startActivity


Step 2. Activity.startActivityForResult


Step 3. Instrumentation.execStartActivity


Step 4. ActivityManagerProxy.startActivity


Step 5. ActivityManagerService.startActivity


Step 6. ActivityStack.startActivityMayWait


Step 7. ActivityStack.startActivityLocked


Step 8. ActivityStack.startActivityUncheckedLocked