【问题标题】:How to get an activity from background avoiding to open a new instance of it如何从后台获取活动避免打开它的新实例
【发布时间】:2019-12-29 10:06:20
【问题描述】:

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

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

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

Activity3之后,我可以选择去Activity2或主页。 但是,重要的是,当我开始一项新活动时,前一个活动会留在后台。 例如:当我启动 Activity3 时,Activity2 保持在后台。

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

如何更改我的代码以实现:

如果后台没有Activity2Activity3会启动一个新的Activity2(就像它通常那样)

如果后台有 Activity2Activity3 会从后台获取 Activity2 并使其运行(避免打开第二个实例相同的Activity2

这很难,但我希望我自己已经解释过了!感谢您的回答!

【问题讨论】:

  • 哦,谢谢。这篇文章包含了一些我不知道的东西。这当然是增加我知识的一种方式。不幸的是,它不包含我的问题的答案。感谢您的尝试

标签: java android-studio android-activity


【解决方案1】:

当您从另一个启动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 个活动之间来回切换,它们只会在任务堆栈中重新洗牌。

【讨论】:

  • 感谢它非常有用。标记为正确答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多