启动模式 | 解释 |
---|---|
standard | 默认的启动模式。每次启动Activity都会在任务栈中实例化,在该Activity所在的任务栈中会存在多个Activity的实例,当返回的时候,需要每个Activity分别出栈。 |
singleTop | 如果在任务栈顶存在Activitiy实例,则通过onNewIntent激活重用;否则,创建Activitiy实例,在任务栈中会有多个Activity实例。 |
singleTask | 默认的情况下,如果在任务栈中不存在Activity实例,创建实例;否则通onNewIntent激活重用,在重用该实例的时候,会将该实例上的其他activity的实例清除。在对应的任务栈中有且仅有一个实例。当然如果和android:taskAffinity配合使用,则可以在开启或者复用另外任务栈中来创建或重用Activity实例。由该Activity启动的其他Activity默认的都会在该Activity所在的任务栈中,除非设置android:taskAffinity或将Activity 的launchMode设置为singleInstance。 |
singleInstance | 在新的任务栈中开启,并且该新的任务中有且仅有这一个Activity实例,并且该Activity实例是在整个系统中有且仅有一个。复用Activity实例时,通过onNewIntent进行激活。由该Activity启动的其他Activity不会在该Activity所在的任务栈中,可以在已有的任务栈中,也可以在新创建的任务中。 |
总结
1)当启动模式为standard和singleTop的时候,系统只会在同一任务中对Activity进行创建或复用;
2)当启动模式为singleTask的时候,系统首先会检测该Activity对应的android:taskAffinity任务栈是否存在,若存在,则将该任务切换到前台重用该任务,然后在该任务中查找实例;否则重新创建任务
3)当启动模式为singleInstance的时候,系统首先会检测该Activity实例是否存在,若存在,则将相应的任务切换到前台,重用该实例,否则创建新任务,在新的任务中创建实例。
作者:好人静
來源:CSDN
著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
网友评论