Android FLAG_ACTIVITY_CLEAR_TOP 无法正常工作?

标签 android android-intent android-activity flags

我真的不明白所有这些标志是如何工作的,因为我完全按照文档所说的去做,但它并没有解决我的问题。我的 Activity 是这样启动的:(第一)Activity A -> Activity B -> (第二)Activity A。如果我按下按钮,它会回到 Activity B -> Activity A -> Exit application。现在我想要从 Activity B 声明的第二个 Activity A,当按下返回时,它将跳过 Activity B 和第一个 Activity A,并立即退出应用程序。这是代码:

从 A 到 B:

TabActivityGroupAbs parentActivity = (TabActivityGroupAbs) ((Activity) ctx).getParent();
detailIntent = new Intent(parentActivity, B.class);
parentActivity.startChildActivity("BFromA", detailIntent);

从 B 到 A:

TabActivityGroupAbs parentActivity = (TabActivityGroupAbs) ((Activity) ctx).getParent();
detailIntent = new Intent(parentActivity, A.class);
detailIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
detailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
parentActivity.startChildActivity("AFromB", detailIntent);

从 B 到 A,我添加了标志 FLAG_ACTIVITY_CLEAR_TOP。但它没有清除任何东西。我按回去的时候,还是去了Activity B,然后又去了A。我做错了什么?

而且似乎所有标志都不起作用。从 A 到 B,我输入:

detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

它应该防止 B 被放入 Activity 堆栈。但事实并非如此。从第二个activity A开始,按back还是回到B。

现在我应该怎么做才能退出应用程序而不是从第二个 Activity A 返回到 B。

编辑:我忘了说。从 B 到 A,如果我调用 finish() 来终止 Activity B,那么从第二个 Activity A,当按下返回时,它会返回到第一个 Activity A。为什么 Activity A 在这里有 2 个实例,尽管我设置了 FLAG_ACTIVITY_CLEAR_TOP?真奇怪。

最佳答案

读一遍,flag_activity_clear_top 的使用不再有问题

这里简单说明一下 Flag_Activity_Clear_Top 的用法。

一个正确使用的衬里配方:

它总是清除调用 Activity 和被调用 Activity 之间的中间 Activity (如果有的话)。

这是一个 Activity 流程:

Activity A -> Activity B -> Activity C(使用 flag activity clear top to go to D) ->Activity D

在上面的序列中,当我们到达 D 时,如果我们向后按,我们将得到 Activity C->Activity B-> Activity A因为两者之间没有中间 Activity Activity C 和 Activity D

一些开发者的迷思是——

在使用 C 中的标志 Activity clear top 到达 Activity D 后,他们期望在 D 中按下后退键时会将他们带到应用程序之外。这永远不会发生

Flag_Activity_Clear_Top 始终清除两个 Activity 之间的中间 Activity (如果有的话)

关于Android FLAG_ACTIVITY_CLEAR_TOP 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534079/

相关文章:

java - 如何在android中调整捕获图像的大小

Android - 重用 Activity 实例

java - 如何在 Android 应用程序中全局访问另一个类的 Activity?

android - 验证登录屏幕的 GET JSON 响应并转到主屏幕

android - 通过 Android Intent 将链接发送到 Whatsapp

java - 确定通用类型

java - 无法从服务调用共享首选项

android - 公共(public)类必须在其自己的文件中定义

android - 如何从单独进程中的服务调用 Activity 中的方法?

android - 每个 Activity 的静态初始化器(就像 Fragment 一样)