启动模式
Activity的管理是采用任务栈(类似于集合)的形式
Android任务栈又称为Task,它是一个栈结构,具有后进先出的特性,用于存放我们的Activity组件。- 每次打开个新的
Activity或者退出当前Activity都会在任务栈的中添加或者减少一个Activity,因此一个任务栈包含了一个activity的集合,android系统可以通过Task有序地管理每个activity,并决定哪个Activity与用户进行交互:只有在任务栈栈顶的activity才可以跟用户进行交互。 - 在退出应用程序时,必须把所有的任务栈中所有的
activity清除出栈时,任务栈才会被销毁。 - 一个App中可能不止一个任务栈,某些特殊情况下,单独一个
Actvity可以独享一个任务栈。还有一点就是一个Task中的Actvity可以来自不同的App,同一个App的Activity也可能不在一个Task中。
Activity启动模式有如下几种
- 标准模式(
standard) - 栈顶复用模式(
singleTop) - 栈内复用模式(
singleTask) - 单例模式(
singleInstance)
标准模式(standard)
- 启动一次
Activity就会创建一个新的Activity实例并且处于栈顶(启动该Activity的那个栈)
栈顶复用模式(singleTop)
- 如果启动的
Activity处于栈顶,就直接重用该实例(调用onNewIntent()、不调用onCreate()和onStart()) - 如果启动的
Activity不在栈顶,就创建新的实例
栈内复用模式(singleTask)(在同一个栈内中的基础上)
- 栈内已经存在该
Activity的实例,就移除该实例上面所有Activity - 不存在,就创建新的实例
单利模式(singleInstance)
- 启动
Activity是就创建一个新的栈,再创建Activity实例放进去
用于多个app共享一个
Activity实例
设置启动模式
清单文件里面Activity添加属性,默认为标准模式
android:launchMode="启动模式"通过Intent设置
Intent inten = new Intent (context,ActivityB.class);
intent,addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);//启动模式
startActivity(intent);FLAG_ACTIVITY_SINGLE_TOP//singleTopFLAG_ACTIVITY_NEW_TASK//standard