Activity的4中启动模式
Android当中,Activity有4中启动模式,分别是standard(标准启动模式),singleTop,singleTask,singleInstance,具体如下
1.standard
standard是Android默认的启动模式,当启动一个Activity时,不管此时任务栈当中是否已经存在这个Activity,系统都会新建一个对象。
如下图所示,当前任务栈当中存在ActivityA和ActivityB,此时再启动ActivityA,则系统会新建一个ActivityA的对象,此时任务栈当中
会存在两个ActivityA的对象。
2.singleTop
当启动一个singleTop模式的Activity时,如果这个Activity处于栈顶,则直接复用这个Activity,不创建新的实例;
如果这个Activity不处于栈顶,则创建新的实例,此时跟standard模式是一样的。
处于栈顶
不处于栈顶
3.singleTask
如果Activity设置为singleTask启动模式,那么任务栈当中只能有一个实例。当任务栈当中没有这个Activity的时候,启动Activity,则会创建实例,并将其置于栈顶;
如果任务栈当中已经有了这个Activity实例,则清除掉Activity之上的所有其他Activity。
具体如下图所示,此时任务栈当中有ActivityA、ActivityB、ActivityC,当启动ActivityA时,则清除掉ActivityB和ActivityC。
4.singleInstance
设置成singleInstance启动模式的Activity,会在一个独立的任务栈当中开启,并且这个任务栈当中有且仅有一个Activity实例。
singleTask和singleInstance的区别
singleTask:保证任务栈当中只有一个实例,但是可以有多个实例存在于不同的任务栈当中;
singleInstance:保证系统当中只有一个实例。