我正在浏览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
答案 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