Android 启动模式和单实例

Android lauchmode and single instance

我不明白如何在 activity 的启动模式和意图标志之间做我的用例。

我想做什么:

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

换句话说,我想在堆栈中拥有所有 activity 的单个实例,如果我记得其中一个实例,activity 会转到堆栈顶部(使用重置或destroy + recreate 不重要,我在 onresume 中的创建逻辑是这样的),我的自定义闪屏异常(但我用 noHistory 解决了这个 activity "splashscreen")。

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

因此,如果您能告诉我应该使用哪个 launchmode and/or 标志来制作我想要的东西,我将不胜感激。

FLAG_ACTIVITY_REORDER_TO_FRONT 似乎适合您的情况:

FLAG_ACTIVITY_REORDER_TO_FRONT

If set in an Intent passed to Context.startActivity(), this flag will cause the launched activity to be brought to the front of its task's history stack if it is already running.

For example, consider a task consisting of four activities: A, B, C, D. If D calls startActivity() with an Intent that resolves to the component of activity B, then B will be brought to the front of the history stack, with this resulting order: A, C, D, B. This flag will be ignored if FLAG_ACTIVITY_CLEAR_TOP is also specified.

如果我们在上面的描述中省略 Activity D,我们会得到:

A、B、C(开始 B)=> A、C、B

这似乎是你想要的。