Android:清除后退堆栈

2024-02-14

在 Android 中,我有一些活动,比如说 A、B、C。

在A中,我使用以下代码打开B:

Intent intent = new Intent(this, B.class);
startActivity(intent);

在B中,我使用以下代码打开C:

Intent intent = new Intent(this, C.class);
startActivity(intent);

当用户点击 C 中的按钮时,我想返回 A 并清除返回堆栈(关闭 B 和 C)。所以当用户使用后退按钮B和C时不会出现,我一直在尝试以下操作:

Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent);

但是,如果我返回活动 A 时使用后退按钮,B 和 C 仍然会出现。如何避免这种情况?


尝试添加FLAG_ACTIVITY_NEW_TASK http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK如文档中所述FLAG_ACTIVITY_CLEAR_TOP http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP:

此启动模式还可用于 配合使用效果良好 FLAG_ACTIVITY_NEW_TASK:如果用于 启动任务的根活动,它 将带来任何当前正在运行的 该任务的实例 前景,然后将其清除到其 根状态。这个特别有用, 例如,当启动 通知中的活动 经理。

所以你的代码要启动A将会:

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
CurrentActivity.this.finish(); // if the activity running has it's own context


// view.getContext().finish() for fragments etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:清除后退堆栈 的相关文章

随机推荐