从单个实例 activity 启动 activity

Launching activity from a singleinstance activity

我有 3 个活动:

甲、乙、丙

A 具有 singleInstance 启动模式。

A为主activity,它启动B,B启动C,然后我按home键,再次打开应用。

A 已打开,但当 A 尝试启动 B 时,将打开现有堆栈(returns 到现有 C)

这是预期的行为吗?

如果 A 是 singleInstance,当 A 启动 B 时,Android 自动将 FLAG_ACTIVITY_NEW_INSTANCE 添加到 Intent(因为 A 是 singleInstance)并且因为其中,它创建了一个新任务,其中 B 位于任务的根部。然后 B 启动 C。Andriod 将 C 启动到与 B 相同的任务中(这是正常行为)。所以现在你有 2 个任务:一个只有 A,另一个在根部有 B,C 在上面。

现在你回到包含 A 的任务。当 A 再次启动 B 时,Android 再次将 FLAG_ACTIVITY_NEW_TASK 添加到 Intent)。然后,因为 FLAG_ACTIVITY_NEW_TASK 已设置,所以 Android 会查找在根部具有 B 的现有任务。既然它找到了一个,它就会简单地将该任务带到前台,无论该任务在该任务进入后台时处于什么状态。这是正常的预期行为。

注意: 这只是不使用特殊启动模式 singleInstancesingleTask 的又一个原因,因为它们有很多讨厌的、未记录的, 误解 side-effects.