销毁活动堆栈

时间:2011-02-03 15:47:31

标签: android android-activity

我正在构建一个应用程序,要求用户登录并获取用户ID。此id是我的扩展Application类的成员变量。

我希望应用程序识别何时/如果此变量被清除,如果是,则抛出我的登录屏幕并销毁其后面的Activity堆栈。

以下是我认为我将要做的事情:

扩展活动和ListActivity(目前我使用的活动中只有两种类型)。在onResume()处理程序中,检查是否设置了用户标识。如果没有,请抛出登录屏幕并销毁其后面的活动堆栈的其余部分。我的所有活动都将来自这些新的扩展活动。

我的问题是我不知道如何销毁特定活动背后的活动堆栈。有什么想法吗?

一个想法是让广播接收侦听特定消息,告诉活动自杀,但我希望Android已经有适合这种情况的东西。

更新

另外,有没有办法清除整个Activity堆栈?我想覆盖Activity上的onBackPressed()处理程序并让Activity堆栈断开,以便用户返回到Android主屏幕。

2 个答案:

答案 0 :(得分:7)

其他选择是使用AndroidManifest.xml中的noHistory参数来完成此任务。 所以你的活动不应该放在历史堆栈中

<activity android:name=".MyActivity"
          android:noHistory="true" />

答案 1 :(得分:3)

我同意danh32,设置FLAG_ACTIVITY_CLEAR_TOP意图将登录活动置于堆栈顶部将破坏新活动背后的所有活动(因此,登录活动)。这将在堆栈中留下一个活动。

Intent myIntent = new Intent(view.getContext(), DisplayMenu.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
finish();

我使用此选项允许用户从漫长的路径返回主屏幕进行大量活动。

相关问题