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,被开启的任务栈如下图:
点击返回按钮,Activity会依次出栈,销毁。
二:singleTop模式
如果设置此模式,任务栈会检查栈顶的Activity,如果栈顶的Activity是要开启的Activity,此时新的Activity不会被开启(就是说一个Activity不会被连续开启)。
如:设置页面B为singleTop模式。依次开启 页面A ->页面B ->页面B,被开启的任务栈如下图:
如上,同一个Activity不会被连续开启。
三:singleTask模式
会检查当前任务栈是否已经有要开启的Activity。如果有,会把任务栈清空。并从新打开复用此Activity。
如:设置页面A为singleTask模式,页面B为默认模式。依次开启 页面A ->页面B ->页面B,此时任务栈如下图:
再此开启页面A,Activity任务栈如下图:
四:singleInstance模式
系统会为开启的activity从新创建一个任务栈, 如果再重新开启这个activity,不会再开启新的Activity和任务栈(如,系统的电话页面,不管拨打或者接听多少个电话,始终只有一个电话页面)
如:设置页面B为singleInstance模式。依次开启 页面A ->页面A ->页面B,被开启的任务栈如下图: