6

我无法使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 和 android:launchMode="singleInstance" 将所有活动从堆栈中弹出。

在我的应用程序活动 A 中,启动活动 B(通过 startActivity),然后启动活动 C(通过 startActivity)。在活动 C 上,用户按下菜单项以返回到活动 A。当他们到达活动 A 时,我只希望堆栈上的 A,这样如果他们单击后退按钮,他们就会返回主屏幕(桌面)。

这是我当前在用户按下按钮返回 A 时使用的代码:

Intent i = new Intent(this, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

所有活动都在项目清单中定义为 android:launchMode="singleInstance"。

我的代码似乎不起作用。一旦我回到活动 A,如果我单击后退按钮,我就会返回活动 C。我是否误解了如何使用 Intent.FLAG_ACTIVITY_CLEAR_TOP?

4

2 回答 2

2

我一直发现确保从堆栈中删除 C 的最佳方法是在 startActivity 之后调用 finish() 以从堆栈中删除 C。

文档确实看起来好像事情会按照您期望的方式运行,但似乎这并没有发生,所以 finish() 将确保 C 被删除。

于 2010-07-08T05:54:41.110 回答
0

我通常使用 Al 建议的技术(在开始新活动后调用 finish())。

您还可以尝试使用任务亲和性。我自己从来没有这样做过,但它也可能与你的情况有关。看到这个线程:http ://groups.google.com/group/android-developers/browse_frm/thread/ca3b26a14d024597/129e37375105901b

于 2010-07-08T08:29:40.803 回答