📌  相关文章
📜  什么是 Android Activity “launchMode”?

📅  最后修改于: 2022-05-13 01:58:44.399000             🧑  作者: Mango

什么是 Android Activity “launchMode”?

启动模式是一个 Android 操作系统命令,用于确定应如何启动 Activity。它指定如何将每个新操作链接到现有任务。在继续之前,您必须首先掌握以下关键主题:

  1. 任务
  2. 返回堆栈

活动的启动模式类型

事不宜迟,进入主题,我们将看到主要有四种不同类型的启动模式,这取决于您希望为您的 Android 应用程序启动的类型。它们是:

1. 标准

这是活动的默认启动模式(如果未指定)。它在启动它的任务中启动一个新的活动实例。可以生成多个活动实例,并且可以将多个活动实例分配给相同或不同的任务。换句话说,您可以在同一个任务以及不同的任务中多次创建同一个活动。

示例:假设您有 A、B、C 和 D 活动,而活动 B 具有“启动模式 = 标准”。您现在再次启动 Activity B - Launch B之前的 Activity Stack 状态A to B to C to D.启动后 Activity Stack 的状态 B.

2.单任务

在这种操作方法中,总是会生成一个新的任务,并将一个新实例作为根实例添加到该任务中。如果 Activity 已经存在于另一个任务上,则不会创建新的实例,Android 系统通过 onNewIntent()函数传递 Intent 信息。在任何时候,只有一个活动实例。

示例:假设您有活动 A、B 和 C,并且您的活动 D 具有“启动模式 = 仅一项工作”您即将开始一项活动。 D – Activity Stack 启动前 D 的状态A to B to C. 启动 D Activity 后 Activity Stack 的状态如下: A to B to C to D (照例,D在这里启动。)

3. 单顶

如果在这种启动模式下当前任务的顶部已经存在activity的实例,则不会产生新的实例,Android系统会通过onNewIntent()发送intent数据。如果任务之上不存在实例,则会生成一个新实例。您可以使用此启动模式在同一任务中或跨任务生成同一活动的多个实例,但前提是堆栈顶部尚不存在相同的实例。

示例:假设您有 A、B、C 和 D 活动,其中 D 具有“启动模式 = singleTop”。您现在正在恢复您的活动。 D – 启动D之前Activity Stack的状态A to B to C to D。启动D Activity之后Activity Stack的状态如下:A to B to C to D (这里旧实例为调用,并且意图数据通过 onNewIntent() 回调发送。)

4. 单实例

这是一个非常独特的启动选项,仅在具有单个活动的程序中使用。它的工作方式与Single Task类似,只是在同一任务中不会生成其他活动。从这一点开始的任何进一步活动都将导致创建新任务。

例子:启动前,Activity Stack D的状态A to B to C。启动D activity后,Activity Stack的状态如下:

A -> B -> C — 工作 #1
D — 工作 #2(在这里,D 将被分配到单独的职责)

如果继续这样添加 E 和 D,堆栈将如下所示:Job #1- A -> B -> C -> E。

通过使用上述方法,您可以以编程方式启动任务,而无需在 Android Manifest 中提及启动类型!