考虑我有一个包含 Activity A、B、C 的应用程序。 A 从启动器启动,B 从 A 启动。B 有一个按钮。我的要求是单击 B 上的按钮, Activity 堆栈 A->B 的当前历史应该清除并且历史堆栈必须仅包含 C。是否可以这样做?如果是这样请告诉我...
提前致谢!
最佳答案
虽然繁琐,但可以通过使用 Activity 方法 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/