Activity的四种启动模式
1.standard
2.singleTop
3.singleTask
4.singleInstance
#
配置方式
在清单文件AndroidManifest.xml配置的LunchMode属性即可。
#
1. standard模式介绍
standard模式是所启动的Activity都是在同一个task容器栈下(栈结构,先进后出),
不会重新创建新的task容器栈。先压入栈的Activity实例按顺序入栈底,后入栈在栈顶
,处于栈的顶部Activity实例处于活动状态,其他处于非活动状态。按物理返回键,退出
当前所处活动状态Activity窗口,这样就会从task容器栈中弹出,显示在手机主屏幕上,
从而,有非活动状态转换成活动的状态。模式模式就是standard模式
2. singleTop模式介绍
如果task容器栈顶(必须是在栈顶)存在已经激活的Activity实例,就会重用当前栈顶的
Activity实例,不会再重新去实例化Activity对象。
3. singleTask模式介绍
singletask模式,启动的目标Activity实例如果已经存在task容器栈中,不管当前实例
处于栈的任何位置,无论栈顶还是栈底,只要目标Activity实例处于task容器栈中,都可
以重用该Activity实例对象,并把处于该Activity实例对象上面全部Activity实例清除
掉,所以,task容器栈中永远只有唯一实例对象,不会存在两个相同的实例对象。
4. singleInstance模式介绍
这种启动模式比较特殊,他会启动一个新的栈结构,将activity放入其中,并且保证不再
有其他的activity进入。
模拟运行过程:
假设fistActivity启动模式为默认standard模式,secondActivity启动模式为
singleInstance,他们两个可以相互调用。
1. 从firstActivity启动secondActivity,
2. 在弹出的secondActivity中启动firstActivity。
3. 现在有两个栈结构,A和B,A中存放两个firstActivity,B中存放一个secondActivity。
4. 按返回键的时候,会先将A中的两个fistActivity退出栈,A栈空了之后再进入B栈,
将B栈的secondActivity退出栈。
singleInstance启动模式,简单说就是可以共享某个Activity。比如,应用1的任务容器
栈中创建了MainActivity实例,应用2也要激活MainActivity,则不需要创建
MainActivity实例,直接可以公用MainActivity实例。
尤其值得注意:应用1启动MainActivity,按home键;打开应用2启动应用1的
MainActivity实例。在按home键,打开应用1,这时候应用1的界面是应该是处于
MainActivity界面实例。