除了Android中的前两项活动外,我怎样才能清除所有活动?

时间:2016-09-02 23:40:03

标签: java android android-activity android-task onnewintent

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

  

案例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_TOPACTIVITY_FLAG_SINGLE_TOP并使用它来启动活动A并在onNewIntent或onCreate方法中捕获额外信息以立即启动活动实例的潜在解决方案乙

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

我想到的另一种解决方法是在A和B之间插入一个加载屏幕活动,我可以回想起#34;返回并重新启动B.然而,这似乎有些迟钝,因为它是一个简单的应用程序,并且确实没有任何需要加载时间的东西。此外,还有可能将活动B中的所有活动都放在一项新任务中,但这似乎更加愚蠢和不必要。

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

编辑:我确实需要back stack直到用户选择活动D中的特定选项。例如,如果他们只是点击活动D中的后退键或其中一个B(或C) )活动,我确实需要它回到前一个活动(默认情况下),所以在我进行活动时完成活动将无法工作。

1 个答案:

答案 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()