Android:防止活动被多次实例化

时间:2012-10-11 18:00:48

标签: android android-intent

我正在浏览Android Task and Back Stack documentation,有一次他们提到了这一点:

  

如果您的应用程序允许用户从多个活动启动特定活动,则会创建该活动的新实例并将其推送到堆栈(而不是将任何先前的活动实例置于顶部)。因此,应用程序中的一个活动可能会被多次实例化(甚至来自不同的任务),如图3所示。因此,如果用户使用“返回”按钮向后导航,则活动的每个实例都按顺序显示被打开(每个都有自己的UI状态)

我们举一个例子:

我有活动A开始活动B,它启动活动C,开始D。

堆栈是A-> B-> C-> D 现在可以从D启动C所以当我们从D堆栈启动C时将

A-> B-> C-> D-&以及c

现在我希望Activity在Back Stack中只有1个实例或只有1个条目,而不是这个标准行为。 “SingleTop”不起作用,因为当我们从D开始时,活动C不在顶部。

我可能会遗漏一些东西,但是有没有办法实现这一目标,确保活动只有1个背包入口?

由于 Pranay

2 个答案:

答案 0 :(得分:5)

使用Intent.FLAG_ACTIVITY_CLEAR_TOP,例如:

    Intent intent = new Intent(context, <your_activity_here>);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    context.startActivity(intent);

因此,活动C之后堆栈中的所有活动都将自动完成。如果使用指定的标志

<强> A-&GT; B-&GT; C-&GT; d

将成为

<强> A-&GT; B-&以及c

答案 1 :(得分:3)

您也可以使用android:launchMode="singleInstance" in your activity tag in manifest