我的应用程序的活动结构可以是以下任何一种。
案例1:A> B> B> B> d
案例2:A> B> d
案例3:A> B> B> B> C> d
活动D中有一个选项,当我选择时,我希望最终在堆栈中使用它:
A>乙
理想情况下,B是该活动的新实例。起初我以为我在ACTIVITY_FLAG_CLEAR_TOP
中找到了我的解决方案,这在案例2中有效。但是,无论是情况1还是情况3,它最终都会留下所有的“下腹部”。 B活动完好无损。 A> B> B>乙
搜索互联网我发现了使用ACTIVITY_FLAG_CLEAR_TOP
和ACTIVITY_FLAG_SINGLE_TOP
并使用它来启动活动A并在onNewIntent或onCreate方法中捕获额外信息以立即启动活动实例的潜在解决方案乙
然而,对于我而言,代码方面似乎相当尴尬。特别是考虑到活动A是一个主屏幕,应该(从一个直观的事物流)只能在帐户之间切换时访问(技术上讲,角色,因为它是一个游戏)。
我想到的另一种解决方法是在A和B之间插入一个加载屏幕活动,我可以回想起#34;返回并重新启动B.然而,这似乎有些迟钝,因为它是一个简单的应用程序,并且确实没有任何需要加载时间的东西。此外,还有可能将活动B中的所有活动都放在一项新任务中,但这似乎更加愚蠢和不必要。
TLDR:除了A和新活动B之外,还有其他方法可以清除所有堆栈吗?或者是我注定要使用解决方法的答案。
编辑:我确实需要back stack
直到用户选择活动D中的特定选项。例如,如果他们只是点击活动D中的后退键或其中一个B(或C) )活动,我确实需要它回到前一个活动(默认情况下),所以在我进行活动时完成活动将无法工作。
答案 0 :(得分:0)
每当您不需要在Activity
添加back stack
时,在致电New Activities with Intent
时,只需致电finish()
方法。
如果您的呼叫顺序是
A - > B - > C - > D - > ë
从E回来的时候应该回到B.然后,
从Activity D
启动Activity C
,然后与finish()
一起调用,同时从Activity E
调用Activity D
启动finish()
。