如何使我的活动的单个实例与backstack一起使用?

时间:2017-04-11 22:57:27

标签: android android-intent android-activity launchmode

我的应用包含MainActivityChildAaActivity以及ChildBbActivity

MainActivity可以将我们发送到任一子活动,用户可以根据需要在两个子活动之间移动。

但是,每个活动只能有一个实例。

问题是,如果我让孩子活动singleInstance,那么他们都是单独的任务,并切换到另一个应用程序并回到孩子意味着onBackPress我退出应用程序(当我应该返回MainActivity)

如果我将launchMode作为标准,那么我会得到多个子活动实例,尤其是在两个孩子之间来回移动时。

如果我使用singleTop,那么我有两个问题

如果我对孩子使用noHistory,我就无法在他们之间自由移动(首先按回来会让我回到MainActivity)

使用isTaskRoot()显然无法使用singleInstance修复应用程序退出错误,因为它始终是真的(对其他方案并不有用)

我应该如何正确地实现我需要的行为?

  • 后堆栈中每个Activity只有一个实例
  • 所有在同一任务中/切换应用后不退出onBackPress

1 个答案:

答案 0 :(得分:1)

您不需要任何特殊的启动模式。每当您启动一个孩子Activity时,请使用以下标志:

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

这会将Activity的现有实例移动到任务堆栈的前面(如果有的话),或者创建一个新实例(如果没有现有实例)。