如何清除堆栈中的所有活动?

时间:2010-07-08 04:38:13

标签: android android-manifest

我无法使用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?

2 个答案:

答案 0 :(得分:2)

我总是找到确保从堆栈中删除C的最佳方法是在startActivity之后调用finish()以从堆栈中删除C.

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

答案 1 :(得分:0)

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

您还可以尝试使用任务亲和力。我自己从未这样做过,但也可能与你的情况有关。请参阅此主题:http://groups.google.com/group/android-developers/browse_frm/thread/ca3b26a14d024597/129e37375105901b