Android 启动模式的单个实例

SingleInstance of Android launchMode

我阅读了 official documentation 并了解到 singleInstance 总是通过创建新任务来打开。所以我想如果我 运行 两个具有相同 taskAffinity 的活动,只有最后打开的 activity 会在返回堆栈上。但是,当两个 Activity 以 singleInstance 和相同的 taskAffinity 打开时,这两个 Activity 都被压入后栈。我怎么理解singleInstance

这个很简单:taskAffinity 胜过 launchMode。这意味着,如果您启动 Activity 并且 Activity 与任务中的其他活动具有相同的 taskAffinity,特殊的 launchModes singleTasksingleInstance 被忽略。

很遗憾,文档并非 100% 正确,因为在某些情况下 singleInstancesingleTask 启动模式的行为与文档中描述的不同。

一般来说,您不应该使用特殊的启动模式 singleTasksingleInstance,因为它们带有很多不明显的 side-effects。除非您正在实施 HOME-screen 替换,否则您不需要这些特殊的启动模式。