从单个实例 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 的现有任务。既然它找到了一个,它就会简单地将该任务带到前台,无论该任务在该任务进入后台时处于什么状态。这是正常的预期行为。
注意: 这只是不使用特殊启动模式 singleInstance
和 singleTask
的又一个原因,因为它们有很多讨厌的、未记录的, 误解 side-effects.
我有 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 的现有任务。既然它找到了一个,它就会简单地将该任务带到前台,无论该任务在该任务进入后台时处于什么状态。这是正常的预期行为。
注意: 这只是不使用特殊启动模式 singleInstance
和 singleTask
的又一个原因,因为它们有很多讨厌的、未记录的, 误解 side-effects.