java - 如何从后台获取活动避免打开它的新实例
问题描述
我的应用程序具有三个基本活动。就像在 Instagram 上一样,我有一个底部菜单,我可以在其中选择一项活动。
当应用程序启动时,出现的第一个活动是HomeActivity。所以方案是这样的:
主页 --> 活动 2 --> 活动 3。
在Activity3之后,我可以选择去Activity2或 Home。但是,重要的是要说当我开始一项新活动时,前一个活动会留在后台。例如:当我启动Activity3时,Activity2保持在后台。
问题是,当我从Activity3转到Activity2
like that : Home > Activity 2 > Activity 3 > Activity 2
时,会有两个不同的Activity2实例,一个在后台,另一个在运行。所以问题是:
如何更改我的代码以实现:
如果后台没有Activity2,则Activity3启动一个新的Activity2(就像它通常那样)
如果后台有 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 个活动之间来回切换,它们只会在任务堆栈中重新洗牌。
推荐阅读
- arrays - 将事件索引与时间向量合并 Matlab
- docker - 无法完成与 Docker Container 内的套接字服务器的连接,而未容器化的同一个 gunicorn 服务器工作正常
- java - Webstart 上的 Netbeans“无法启动应用程序”
- pandas - PatsyError:数据参数和列之间的行数不匹配(statsmodels)
- python - 通过自己的数据集进行 YOLO 训练
- r - 向量列表中的grepl和子集?
- tensorflow - TensorFlow 出错 - 具有多个元素的数组的真值不明确
- javascript - Javascript 未检测到 div 是否正确为空
- kotlin - 带有接收器的函数的 Kotlin 扩展函数
- javascript - 在 Draft-js 中,当用户光标/选择位于该实体内时,如何将类应用于实体以突出显示它?