【发布时间】:2016-09-02 23:40:02
【问题描述】:
我的应用的活动结构可以是以下任何一种。
案例1:A > B > B > B > D
案例2:A > B > D
案例3:A > B > B > B > C > D
在 Activity D 中有一个选项,当我选择它时,我希望在堆栈中结束:
A > B
理想情况下,B 是该活动的新实例。起初我以为我在ACTIVITY_FLAG_CLEAR_TOP 中找到了我的解决方案,它适用于案例 2。但是,无论是案例 1 还是案例 3,它最终都会使所有“下腹部”B 活动保持原样。 A > B > B > B。
在互联网上搜索我发现了一个潜在的解决方案,使用 ACTIVITY_FLAG_CLEAR_TOP 和 ACTIVITY_FLAG_SINGLE_TOP 并使用它来启动活动 A 并在 onNewIntent 或 onCreate 方法中捕获额外的内容以立即启动活动 B 的实例。
但是,在代码方面,这对我来说似乎很尴尬。特别是考虑到活动 A 是一个主屏幕,应该(从直观的事物流中)只有在帐户之间切换时才可以访问(从技术上讲,角色,因为它是一个游戏)。
我想到的另一种解决方法是在 A 和 B 之间插入一个加载屏幕活动,我可以“召回”并从中重新启动 B。然而,这似乎也有点迟钝,因为它是一个简单的应用程序,实际上没有任何需要加载时间的东西。此外,还有可能将 Activity B 以后的所有活动都放在一个新任务中,但这似乎更加迟钝和不必要。
TLDR:除了 A 和新的活动 B 之外,还有其他方法可以清除所有堆栈吗?或者是我注定要使用变通方法的答案。
编辑:我确实需要 back stack 直到用户在活动 D 中选择特定选项。例如,如果他们只是在活动 D 或 B(或 C)活动之一中按下返回键,我确实需要它返回到前一个活动(默认情况下),所以我继续完成这些活动是行不通的。
【问题讨论】:
标签: java android android-activity android-task onnewintent