Activity四种启动模式

Android是通过任务栈来管理Activity的,常见有以下操作:

1、打开一个Activity就是进栈

2、关闭一个Activity就是出栈

3、我们操作的Activity永远是栈顶的Activity

4、退出应用程序,是清空应用任务栈

6、一般情况下一个应用对应一个任务栈


Activity有以下四种启动模式:

1、standard模式

2、singleTop模式

3、singleTask模式

4、singleInstance模式

可以在清单文件中配置 Activity 的 launchModel 属性,来设置启动模式。如:

android:launchMode="singleInstance"


一:standard模式:

是Activity默认开启的模式,不设置时,默认就是这个模式。设置此模式的Activity可以多次被开启。

如:设置页面A、页面B都为standard模式。依次开启 页面A ->页面B ->页面B ->页面A ->页面A,被开启的任务栈如下图:

standard模式任务栈

点击返回按钮,Activity会依次出栈,销毁。


二:singleTop模式

如果设置此模式,任务栈会检查栈顶的Activity,如果栈顶的Activity是要开启的Activity,此时新的Activity不会被开启(就是说一个Activity不会被连续开启)。

如:设置页面B为singleTop模式。依次开启 页面A ->页面B ->页面B,被开启的任务栈如下图:

singleTop模式任务栈

如上,同一个Activity不会被连续开启。


三:singleTask模式

会检查当前任务栈是否已经有要开启的Activity。如果有,会把任务栈清空。并从新打开复用此Activity。

如:设置页面A为singleTask模式,页面B为默认模式。依次开启 页面A ->页面B ->页面B,此时任务栈如下图:

任务栈

再此开启页面A,Activity任务栈如下图:

singleTask模式任务栈

四:singleInstance模式

系统会为开启的activity从新创建一个任务栈, 如果再重新开启这个activity,不会再开启新的Activity和任务栈(如,系统的电话页面,不管拨打或者接听多少个电话,始终只有一个电话页面)

如:设置页面B为singleInstance模式。依次开启 页面A ->页面A ->页面B,被开启的任务栈如下图:

任务栈1
任务栈2

你可能感兴趣的:(Activity四种启动模式)