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

Pra*_*ran 3 android android-intent

我正在阅读Android Task和Back Stack文档,他们一度提到了这一点:

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

我们来举个例子:

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

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

A-> B-> C-> D->Ç

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

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

谢谢Pranay

Vit*_*ski 6

使用Intent.FLAG_ACTIVITY_CLEAR_TOP,例如:

    Intent intent = new Intent(context, <your_activity_here>);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

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

A-> B-> C-> d

会变成

A-> B-> C ^