android - 如何正确删除所有 Activity 堆栈?

标签 android android-activity stack

Activity A -> Activity B -> Activity C -> Activity D。在 Activity D 中按“后退”应将用户导航出应用程序,而“后退”应在 Activity C、B 和 A 中正常工作。即 C -> back -> B -> back A -> back -> exit.

我尝试使用 Activity.FLAG_ACITIVITY_CLEAR_TOP, 等设置标志,并使用不同的组合。似乎什么都不起作用。最低 API 级别 7。

最佳答案

对于 #1 在 Activity D 中按返回键应将用户导航出应用程序

在 ActivityD 中,您可以重写 onBackPressed 或 onKeyDown 方法,然后使用标志 FLAG_ACTIVITY_CLEAR_TOP 和退出标志启动 ActivityA(通过 putExtra 方法)。在 ActivityA 中,您可以获得退出标志值,如果退出标志设置为 true,则调用 finish()。

在 Activity A 的 onCreate 方法中,您需要做的是

if (getIntent().getBooleanExtra("EXIT", false)) {
 finish();
}

在ActivityD的onBackPressed或onKeyPressed方法中,

intent = (this, ActivityA.class);   
   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   intent.putExtra("EXIT", true);
   startActivity(intent); 

对于 #2 从 ActivityA 退出

您可以简单地在 onBackPressed 或 onKeyPressed 上调用 finish() 方法。

关于android - 如何正确删除所有 Activity 堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12492576/

相关文章:

android - 如何在 Android 中为 ImageSpan 应用背景颜色?

java - 后缀到中缀

c - 为什么我们可以在函数内部初始化并仍然在函数外部使用该值?

java - 从 MainActivity 切换或删除启动屏幕

c - 无法创建堆栈。出现段错误。怎么办?

android - 向上滑动时向上滑动 RecyclerView,或向下滑动时向下滑动 RecyclerView

Android SDK 不断安装已安装的 SDK

android - WebView 和 HTTPS?

android - 如何在android中动态设置自定义标题栏TextView值?

java - 从服务启动 Activity 不起作用 (Android)