我的应用程序具有三个基本活动。像在Instagram上一样,我有一个底部菜单,可以在其中选择一项活动。

当应用启动时,出现的第一个活动是HomeActivity。所以该方案是这样的:


主页->活动2->活动3。


在Activity3之后,我可以选择转到Activity2或家庭。
但是,必须要说的是,当我开始一项新活动时,上一个活动处于后台。
例如:当我启动Activity3时,Activity2保留在后台。

问题是,当我从Activity3转到Activity2时
like that : Home > Activity 2 > Activity 3 > Activity 2将有两个不同的Activity2实例,一个在后台,另一个在运行。所以问题是:

如何更改代码以实现以下目的:

如果后台没有Activity2,则Activity3将启动一个新的Actvity2(就像通常那样)

如果后台有一个Activity2,则Activity3从后台获取Activity2并使它运行(避免打开同一Activity2的第二个实例)

很难,但我希望自己能解释一下!感谢您的回答!

最佳答案

当从另一个启动一个Activity时,只需添加FLAG_ACTIVITY_REORDER_TO_FRONT,如下所示:

Intent intent = new Intent(this, TargetActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);


这会将目标Activity带到任务堆栈的最前面(如果任务堆栈中不存在现有实例,则创建一个新实例)。启动的Activity在任务堆栈中保持活动状态。

这样,您可以在3个活动之间来回切换,它们只会在任务堆栈中重新排列。

10-08 09:18