【问题标题】:How to clean back stack on Android API 10 (Android 2.3.3)如何在 Android API 10 (Android 2.3.3) 上清理回栈
【发布时间】:2012-08-27 09:33:21
【问题描述】:

我想知道如何清理堆栈中所有以前的活动(新活动除外),但我希望在 Android API 10 (Android 2.3.3) 中进行。

answer 的指导下,我知道这是不可能直接实现的,因为自 API 11 以来就存在专门用于执行此操作的标志。

但我想知道这是否可能与某些兼容性或是否有人有任何解决方案。

提前致谢。

【问题讨论】:

  • 你想一直这样做吗?或者只是在某些情况下。因为如果您在开始一项新活动时总是希望某项活动消失,您可以在当前活动上调用 finish(),而在下一个活动上调用 startActivity()

标签: android android-intent android-activity android-compatibility


【解决方案1】:

这样做的方法是始终使用startActivityForResult() 开始您的活动。如果您想清理活动堆栈,则将当前活动调用setResult(RESULT_CANCELED),然后调用finish()。在所有活动中(除了您的主要或“根”活动)都有以下方法:

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_CANCELED) {
        // Want to clear the activity stack so I should just go away now
        setResult(RESULT_CANCELED); // Propagate result to the previous activity
        finish();
}

这将完成堆栈中的所有活动。

【讨论】:

  • 谢谢@David Wasser,就是这样!
  • 聪明的解决方案。完美运行!
【解决方案2】:

您可以将清单文件 android:noHistory="true" 添加到您不想保留在堆栈中的每个活动中

【讨论】:

  • 这通常是个坏主意。这将阻止用户使用“BACK”键返回上一个活动。此外,如果用户离开应用程序(例如接听电话),他将无法返回到他所在的应用程序。一切都会重新开始。不推荐。
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多