Activity启动模式

Activity启动模式

实验环境:小米 MAX2, Android 7.1.1

1.standard(标准模式)
2.singleTop(栈顶复用模式)
3.singleTask(栈内复用模式)
4.singleInstance(单例模式)
5.特性的情况

1.standard(标准模式)
任何情况下都会创建新的Activity实例,并将该实例放入任务栈中。

2.singleTop(栈顶复用模式)
如果当前任务栈中没有实例,那么则创建新的实例放入栈顶。
如果当前任务栈中该实例已经位于栈顶,那么不会创建新的实例,而是复用该实例(调用onNewInstance方法)。
如果当前任务栈中有该实例,但不是位于栈顶,那么则创建新的实例放入栈顶。

3.singleTask(栈内复用模式)
如果需要的任务栈不是当前的任务栈,那么会创建新的任务栈,然后将创建新的实例并放入新的任务栈中。
如果需要的任务栈是当前的任务栈,并且当前任务栈中没有实例存在,那么会创建新的实例并放入新的任务栈中。
如果需要的任务栈是当前的任务栈,并且当前任务栈存在实例,并且该实例位于栈顶,那么复用该实例(调用onNewInstance方法)。
如果需要的任务栈是当前的任务栈,并且当前任务栈存在实例,但该实例不位于栈顶,那么复用该实例(调用onNewInstance方法),但是会强制把位于该实例之前的所有Activity实例退栈。

4.singleInstance(单例模式)
具有singleTask模式的全部属性,但是该实例只能单独存在一个新的任务栈中,且唯一。

5.特殊的情况
假如有任务栈S1,其中有AB两个Activity实例,任务栈S2,其中有CD两个Activity实例,但CD的启动模式是singleTask(此时S2是后台任务栈)。
如果此时要启动D,那么两个任务栈会合成一个新的任务栈ABCD。
如果此时要启动C,那么两个任务栈会合成一个新的任务栈ABC,此时D已经被强制退栈了。

猜你喜欢

转载自blog.csdn.net/yumeizui8923/article/details/80083627