2024年3月29日发(作者:定清晖)
上文介绍了Android应用程序的启动过程,即应用程序默认Activity的启动过程,一般来说,这种默认
Activity是在新的进程和任务中启动的;本文将继续分析在应用程序内部启动非默认Activity的过程的源代
码,这种非默认Activity一般是在原来的进程和任务中启动的。
这里,我们像上一篇文章Android应用程序启动过程源代码分析一样,采用再上一篇文章Android
应用程序的Activity启动过程简要介绍和学习计划所举的例子来分析在应用程序内部启动非默认Activity的
过程。
在应用程序内部启动非默认Activity的过程与在应用程序启动器Launcher中启动另外一个应用程序
的默认Activity的过程大体上一致的,因此,这里不会像上文Android应用程序启动过程源代码分析一样详
细分析每一个步骤,我们着重关注有差别的地方。
回忆一下Android应用程序的Activity启动过程简要介绍和学习计划一文所用的应用程序Activity,
它包含两个Activity,分别是MainActivity和SubActivity,前者是应用程序的默认Activity,后者是非默认
Activity。MainActivity启动起来,通过点击它界面上的按钮,便可以在应用程序内部启动SubActivity。
我们先来看一下应用程序的配置文件,看看这两个Activity是如何配置的:
view plain
1.
2.
3.
4.
5.
6.
7.
8.
9.
package="ty" android:versionCode="1" android:versionName="1.0"> android:label="@string/app_name"> 10. 11. 12. 13. 14. 15. android:label="@string/sub_activity"> 16. 17. 18. 19. 20. 21. 22.
这里可以很清楚地看到,MainActivity被配置成了应用程序的默认Activity,而SubActivity可以通过
名称“ivity”隐式地启动,我们来看一下src/shy/luo/activity/文件的内
容,可以清楚地看到SubActivity是如何隐式地启动的:
view plain
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class MainActivity extends Activity implements OnClickListener {
......
@Override
public void onClick(View v) {
if((startButton)) {
Intent intent = new Intent("ivity");
startActivity(intent);
}
10. }
11. }
这里,首先创建一个名称为“ivity”的Intent,然后以这个Intent为参数,通过调
用startActivity函数来实现隐式地启动SubActivity。
有了这些背景知识后,我们就来看一下SubActivity启动过程的序列图:
2024年3月29日发(作者:定清晖)
上文介绍了Android应用程序的启动过程,即应用程序默认Activity的启动过程,一般来说,这种默认
Activity是在新的进程和任务中启动的;本文将继续分析在应用程序内部启动非默认Activity的过程的源代
码,这种非默认Activity一般是在原来的进程和任务中启动的。
这里,我们像上一篇文章Android应用程序启动过程源代码分析一样,采用再上一篇文章Android
应用程序的Activity启动过程简要介绍和学习计划所举的例子来分析在应用程序内部启动非默认Activity的
过程。
在应用程序内部启动非默认Activity的过程与在应用程序启动器Launcher中启动另外一个应用程序
的默认Activity的过程大体上一致的,因此,这里不会像上文Android应用程序启动过程源代码分析一样详
细分析每一个步骤,我们着重关注有差别的地方。
回忆一下Android应用程序的Activity启动过程简要介绍和学习计划一文所用的应用程序Activity,
它包含两个Activity,分别是MainActivity和SubActivity,前者是应用程序的默认Activity,后者是非默认
Activity。MainActivity启动起来,通过点击它界面上的按钮,便可以在应用程序内部启动SubActivity。
我们先来看一下应用程序的配置文件,看看这两个Activity是如何配置的:
view plain
1.
2.
3.
4.
5.
6.
7.
8.
9.
package="ty" android:versionCode="1" android:versionName="1.0"> android:label="@string/app_name"> 10. 11. 12. 13. 14. 15. android:label="@string/sub_activity"> 16. 17. 18. 19. 20. 21. 22.
这里可以很清楚地看到,MainActivity被配置成了应用程序的默认Activity,而SubActivity可以通过
名称“ivity”隐式地启动,我们来看一下src/shy/luo/activity/文件的内
容,可以清楚地看到SubActivity是如何隐式地启动的:
view plain
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class MainActivity extends Activity implements OnClickListener {
......
@Override
public void onClick(View v) {
if((startButton)) {
Intent intent = new Intent("ivity");
startActivity(intent);
}
10. }
11. }
这里,首先创建一个名称为“ivity”的Intent,然后以这个Intent为参数,通过调
用startActivity函数来实现隐式地启动SubActivity。
有了这些背景知识后,我们就来看一下SubActivity启动过程的序列图: