【发布时间】:2016-10-28 01:14:38
【问题描述】:
我在堆栈中有活动 A->B,为了启动活动 C,我调用
Intent starter = new Intent(context, MainActivity.class);
starter.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(starter);
这一切都很好,活动 A 和 B 都调用了 OnDestroy。如果我现在按下硬件“返回”按钮,活动会适当地完成并被隐藏。但是现在的问题是,如果我通过单击硬件最近应用程序按钮通过应用程序返回应用程序,它将返回到 Activity A。Activity 被销毁并且不在堆栈中。在清单中,所有活动都没有设置 android:launchMode,因此它们处于默认状态。
唯一可能的其他相关信息是有一个 Activity X,它是一个启动器 Activity,它是 android:launchMode="singleInstance" 并且它启动了 Activity A,话虽如此,它会被销毁并且它不应该无论如何都在那个活动堆栈中。
【问题讨论】:
-
阅读您的描述后,我认为这是正确的行为。当堆栈中没有任何内容时,当然会调用 Launcher Activity(即调用 Activity A)。那么能告诉我你期望发生什么吗?
-
对不起,如果有点混乱,但最后的段落解释了它。 Activity X实际上是启动Activity,是一个singleInstance(没有其他Activity可以在它的任务中启动),它启动ActivityA然后结束。因此,如果再次启动活动 X,但事实并非如此,则会启动活动 A。
标签: android android-intent android-activity android-navigation