假设AM有一个包含活动A、B、C的应用程序。A从启动程序启动,B从A启动。B有一个按钮。我的要求是单击b上的按钮,活动堆栈a->b的当前历史应该清除,并且历史堆栈必须只包含c。是否可以这样做?如果是这样请告诉我…
提前谢谢!

最佳答案

虽然很乏味,但可以通过使用活动方法startActivityForresult()、setResult()、finish()和onActivityResult()启动来完成。
在伪代码中:

A: startActivityForResult(B)
B: startActivityForResult(C)
C: startActivity(D); setResult(CLEAR); finish()
D: ...
B: (onActivityResult) setResult(CLEAR); finish()
A: (onActivityResult) finish()

如果你愿意改变你的架构一点更“自然”的方式来做到这一点,那就是使用flag_activity_clear_top来实现从a、b、c到a的简单转换。
第三种方法是设置a、b和c以使用nohistory,但是这样你就失去了从c返回到b或a的能力。

关于android - 如何清除堆栈历史记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5037409/

10-10 18:26