来源于互联网,在此仅作为记录。
1.standard
Activity 的默认启动模式,每次激活 Activity 的时候都会创建一个新的 Activity 实例,并放入任务栈中。使用场景:基本绝大多数地方都可以用。
2.singleTop
这可能也是非常常用的 launchMode 了。如果在任务的栈顶正好存有该 Activity 的实例,则会通过调用 onNewIntent()
方法进行重用,否则就会同 standard 模式一样,创建新的实例并放入栈顶。
当且仅当启动的 Activity 和上一个 Activity 一致的时候才会通过调用 onNewIntent() 方法重用 Activity
FLAG_ACTIVITY_SINGLE_TOP
3.singleTask
这个 launchMode专门用于解决上面 singleTop 的另外一种情况,只要栈中已经存在了该 Activity 的实例,就会直接调用 onNewIntent()
方法来实现重用实例。
4.singleInstance
在一个新栈中创建该 Activity 的实例,并让多个应用共享该栈中的该 Activity 实例。一旦该模式的 Activity 实例已经存在于某个栈中,任何应用再激活该 Activity 时都会重用该栈中的实例,是的,依然是调用 onNewIntent()
方法。其效果相当于多个应用共享一个应用,不管是谁激活,该 Activity 都会进入同一个应用中。
Intent 标签
通过代码来设置 Activity 的启动模式的方式,优先级比清单文件设置更高。
- FLAG_ACTIVITY_NEW_TASK
这个标识会使新启动的 Activity 独立创建一个 Task。 - FLAG_ACTIVITY_CLEAR_TOP
这个标识会使新启动的 Activity 检查是否存在于 Task 中,如果存在则清除其之上的 Activity,使它获得焦点,并不重新实例化一个 Activity,一般结合 FLAG_ACTIVITY_NEW_TASK 一起使用。 - FLAG_ACTIVITY_SINGLE_TOP
等同于在 launcherMode 属性设置为 singleTop。