如何让我的活动的单个实例与后台堆栈一起工作?
How do I keep single instances of my Activities working with the backstack?
我有一个带有 MainActivity
和 ChildAaActivity
和 ChildBbActivity
的应用程序。
MainActivity 可以将我们带到 Child 活动中的任何一个,用户可以根据需要在两个 Child 活动之间移动。
但是,每个活动只能有一个实例。
问题是,如果我进行 child 活动 singleInstance
,那么它们都是单独的任务,切换到另一个应用程序并返回 child 意味着 onBackPress
我退出应用程序(当我应该 return 到 MainActivity 时)
如果我将 launchMode
作为标准,那么我会得到 child 活动的多个实例,尤其是在两个 children 之间来回移动时。
如果我使用singleTop
,那么我有两个问题
如果我在 children 上使用 noHistory
我不能在它们之间自由移动(第一次向后按会 return 我到 MainActivity)
使用 isTaskRoot()
显然不会与 singleInstance
一起修复应用程序退出错误,因为它永远是真的(并且对其他情况没有用)
我应该如何正确实现我需要的行为?
- 返回堆栈中每个 Activity 只有一个实例
- 全部在同一个任务/切换应用后不退出onBackPress
您不需要任何特殊的启动模式。每当您启动 child Activity
时,请使用以下标志:
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
这会将 Activity
的现有实例移动到任务堆栈的前面(如果有的话),或者创建一个新实例(如果没有现有实例)。
我有一个带有 MainActivity
和 ChildAaActivity
和 ChildBbActivity
的应用程序。
MainActivity 可以将我们带到 Child 活动中的任何一个,用户可以根据需要在两个 Child 活动之间移动。
但是,每个活动只能有一个实例。
问题是,如果我进行 child 活动 singleInstance
,那么它们都是单独的任务,切换到另一个应用程序并返回 child 意味着 onBackPress
我退出应用程序(当我应该 return 到 MainActivity 时)
如果我将 launchMode
作为标准,那么我会得到 child 活动的多个实例,尤其是在两个 children 之间来回移动时。
如果我使用singleTop
,那么我有两个问题
如果我在 children 上使用 noHistory
我不能在它们之间自由移动(第一次向后按会 return 我到 MainActivity)
使用 isTaskRoot()
显然不会与 singleInstance
一起修复应用程序退出错误,因为它永远是真的(并且对其他情况没有用)
我应该如何正确实现我需要的行为?
- 返回堆栈中每个 Activity 只有一个实例
- 全部在同一个任务/切换应用后不退出onBackPress
您不需要任何特殊的启动模式。每当您启动 child Activity
时,请使用以下标志:
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
这会将 Activity
的现有实例移动到任务堆栈的前面(如果有的话),或者创建一个新实例(如果没有现有实例)。