Android 的四种启动模式

来源于互联网,在此仅作为记录。

1.standard

Activity 的默认启动模式,每次激活 Activity 的时候都会创建一个新的 Activity 实例,并放入任务栈中。使用场景:基本绝大多数地方都可以用。

img

2.singleTop

这可能也是非常常用的 launchMode 了。如果在任务的栈顶正好存有该 Activity 的实例,则会通过调用 onNewIntent() 方法进行重用,否则就会同 standard 模式一样,创建新的实例并放入栈顶。

当且仅当启动的 Activity 和上一个 Activity 一致的时候才会通过调用 onNewIntent() 方法重用 Activity

img

FLAG_ACTIVITY_SINGLE_TOP
3.singleTask

这个 launchMode专门用于解决上面 singleTop 的另外一种情况,只要栈中已经存在了该 Activity 的实例,就会直接调用 onNewIntent() 方法来实现重用实例。

img

4.singleInstance

在一个新栈中创建该 Activity 的实例,并让多个应用共享该栈中的该 Activity 实例。一旦该模式的 Activity 实例已经存在于某个栈中,任何应用再激活该 Activity 时都会重用该栈中的实例,是的,依然是调用 onNewIntent() 方法。其效果相当于多个应用共享一个应用,不管是谁激活,该 Activity 都会进入同一个应用中。

img

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。
发布了4 篇原创文章 · 获赞 1 · 访问量 583

猜你喜欢

转载自blog.csdn.net/hankesi/article/details/103961562