android - 启动模式为“singleInstance”的两个活动

Sar*_*rma 4 java android android-studio

假设单个 Android 应用程序中有两个启动模式为“singleInstance”的 Activity。假设下面的一个例子。

我正在从活动 A -> B( launchMode="singleInstance") 导航。现在从活动 B -> C。最后,我从活动 C -> D( launchMode="singleInstance") 导航。

现在我们知道活动 B 的实例将在不同的任务中创建,并且 A 和 C 将在不同的任务中。

现在,我的问题是,活动 D 的任务实例将放置在哪个任务实例中。是与活动 B 一起进行,还是为活动 D 创建一些其他任务。

谢谢。

Jac*_*key 5

如果您不想阅读说明,我会将您问题的答案加粗。

使用时launchMode="singleInstance",有两点需要注意:

  • Activity 将始终在新任务中创建
  • 从此 Activity 启动的所有 Activity 将在单独的任务中创建

因此,launchMode 的 ActivitysingleInstance将始终在其自己的任务中被隔离。该任务中不会有其他活动。

因此,以您的活动 A、B、C 和 D 问题为例:

  • 活动 A 启动活动 B
  • 活动 B 正在launchMode="singleInstance"执行新任务
  • 活动B启动活动C
  • 活动 C 与活动 A 在同一任务中启动
  • 活动C启动活动D
  • 活动 D 正在launchMode="singleInstance"执行新任务

从这里发生的情况来看,您有一个存储活动 A 和活动 C 的任务。launchMode="standard"活动 B 位于它自己的任务中。活动 D 处于其自己的任务中。

因此,如果您选择退出这些活动,您会注意到:

  • 活动 D 得到支持,活动 C 出现
  • 活动 C 得到支持,活动 A 出现

发生这种情况是因为活动 C 与活动 A 执行相同的任务。

另外,Activity D 肯定不会与 Activity B 处于同一任务中,因为 Activity B 的任务仅适用于 Activity B,因为launchMode="singleInstance"

请记住,后台可以同时执行任意数量的任务。只是,如果持有的活动太多或者系统需要内存,它将开始破坏多个任务中的这些后台活动。