0

我的应用程序的活动结构可以是以下任何一种。

案例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_TOPACTIVITY_FLAG_SINGLE_TOP使用它来启动活动 A 并在 onNewIntent 或 onCreate 方法中捕获额外内容以立即启动活动 B 的实例。

但是,在代码方面,这对我来说似乎相当尴尬。特别是考虑到活动 A 是一个主屏幕,应该(从直观的事物流中)只有在帐户之间切换时才能访问(从技术上讲,角色,因为它是一个游戏)。

我想到的另一个解决方法是在 A 和 B 之间插入一个加载屏幕活动,我可以“召回”并从中重新启动 B。但是,这似乎也有点迟钝,因为它是一个简单的应用程序,实际上没有任何需要加载时间的东西。此外,还有可能将 Activity B 以后的所有活动都放在一个新任务中,但这似乎更加迟钝和不必要。

TLDR:除了 A 和新活动 B 之外,还有其他方法可以清除所有堆栈吗?或者是我注定要使用解决方法的答案。

编辑:我确实需要back stack直到用户在活动 D 中选择特定选项为止。例如,如果他们只是在活动 D 或 B(或 C)活动之一中按下后退键,我确实需要它回到前一个活动(默认情况下),所以我继续完成这些活动是行不通的。

4

1 回答 1

0

每当您不需要Activity添加back stack时,New Activities with Intent只需调用调用finish()方法即可。

例如,如果您的调用顺序是

A -> B -> C -> D -> E

当从 E 回来时,它应该回到 B。然后,

Activity DActivity Cthen开始时与它一起调用以及从与它一起调用finish()时启动。Activity EActivity Dfinish()

于 2016-09-03T03:45:04.493 回答