Android

启动模式(launchMode)

2019-10-15  本文已影响0人  Demon鑫

零、资料

一、Stack (任务栈)

二、TaskAffinity (任务相关性)

三、LaunchMode (启动模式)

  1. standard:

    • 标准模式,系统默认模式。每次启动一个Activity都会重新创建一个新的实例。
    • 一个任务栈中可以有多个实例每个实例也可以属于不同的任务栈。
    • 在这种模式下,谁启动了这个 Activity,那么这个 Activity 就运行在启动它的那个Activity所在的栈中。
    • 当用 ApplicationContext 去启动 standard 模式的 Activity 会报错,因为 ApplicationContext 无任务栈。
  2. singleTop:

    • 栈顶复用模式。
    • 在这种模式下,如果新Activity 已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent()会被回调,通过此方法的参数我们可以取出当前请求的信息。
    • 此时被服用的 Activity 的onCreate、onStart 不会被系统调用,因为它并没有发生改变。
    • 如果新 Activity 的实例已存在但不是位于栈顶,那么新Activity 仍然会重新重建。
  3. singleTask:

    • 栈内复用模式。单实例,只要 Activity 在一个栈中存在,那么多次启动此 Activity 都不会重新创建实例,系统会回调onNewIntent()。
    • 当该模式 A 请求启动后,会先寻找是否存在 A 想要的任务栈。如不存在则创建任务栈并创建 A 压入栈中;如存在所需任务栈,则查看 A 是否在栈中如不存在则创建 A 压入栈中。
    • singleTask 默认具有 clearTop 的效果,会清空栈顶其它 Activity。
  4. singleInstance:

    • 单实例模式。
    • 加强版的 singleTask。
    • 此种模式的 Activity 只能单独地位于一个任务栈中。

2019-10-15

上一篇 下一篇

猜你喜欢

热点阅读