0

我不明白如何在活动的launchmode和意图标志之间做我的用例。Android lauchmode和单实例

我想要做什么:

A => B => C => B when i back B => C => A 

换句话说,我希望拥有的所有活动的单个实例在堆栈内,如果我还记得单一实例的一个活动去堆栈的顶部(重置或销毁+重新创建没有重要性,我的创建逻辑onresume如此),例外我的自定义splashscreen(但我解决这个没有历史活动“splashscreen”)。

我试过标准模式与标志 Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP或与此flag Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT但没有我想要的行为。

所以,如果你可以告诉我哪个发射模式和/或我应该使用的标志作出我想要的,我将不胜感激。

回答

1

FLAG_ACTIVITY_REORDER_TO_FRONT看来你的情况适合:

FLAG_ACTIVITY_REORDER_TO_FRONT

如果传递给Context.startActivity()的意图设置,该标志将导致启动的活动被带到前面的任务的历史堆栈,如果它已经在运行。

例如,考虑一个由四个活动组成的任务:A,B,C,D。如果D调用startActivity()并将Intent解析为活动B的组件,那么B将被带到历史堆栈,结果顺序如下:A,C,D,B。如果还指定了FLAG_ACTIVITY_CLEAR_TOP,则该标志将被忽略。

如果我们在上面的描述中漏下活动d我们得到:

A,B,C(启动B)=> A,C,B

这似乎是你想要什么。

+0

我试过了,那工作正常,但事情是在每次调用时启动应用程序的新实例(当您点击按钮显示当前应用程序启动时,我看到了与我启动的屏幕相同的数量。这个?) – Illuyankas

+0

嗯,我发现解决方案只需将lauchmode设置为标准(我忘记更改singleInstance/singleTask,显然这导致了问题)。 – Illuyankas