与此相关的 SO 有很多问题,但我找不到这样直接的问题。
我的应用程序有一个主活动 M 和一个子活动 S。
MlaunchMode
是singleTask
因为我只希望一个实例运行,并且我希望 S 与 M 存在于同一任务中。
SlaunchMode
是standard
,因为它可以有很多实例。
在 S 中,有一个向上按钮,必须始终将用户带到 M。
有两种类型的任务堆栈(顶部有 S):
- MSSSS...S
如果用户在 S 中按下 Up,则堆栈应变为:
M(其中 M 应该处于与用户离开它的状态相同的状态)
- SSSS...S
如果用户在 S 中按下 Up,则堆栈应变为:
M(新实例)
--
那么如何构造Intent
向上按钮...
在第一种情况下,FLAG_ACTIVITY_CLEAR_TOP
应该可以解决问题,但是如果我们将其应用于第二种情况,那么用户将被转储回 Home。
在第二种情况下,FLAG_ACTIVITY_CLEAR_TASK
可以解决问题,但是如果我们将其应用于第一种情况,我们会发现 M 已完成并重新启动。
人们可能也想尝试一下FLAG_ACTIVITY_NEW_TASK
,但是我们发现从 M 中点击 Back 会将用户带到他/她点击 Up 的屏幕。
旁注:当 M 是singleTask
并且活动都具有相同的(默认)任务亲和力时,这怎么可能?
Intent
那么在这种情况下如何正确构造Up呢?