在多个活动之间启动singletop

Posted

技术标签:

【中文标题】在多个活动之间启动singletop【英文标题】:Launch singleTop between multiple activites 【发布时间】:2018-06-27 05:04:20 【问题描述】:

我在启动活动时对 singleTop 概念的理解有些困难。

我们有一些活动 A、B、C、D 和 singleTop 在清单文件中用活动 B 定义。

正如我所读到的,如果我们将去 A->B->C->D->D,则不会创建 D 活动的实例,并且 D 将位于堆栈的顶部。

但是如果我们去 A->B->C->D->B 会发生什么? 哪个活动将被启动,哪个活动将在堆栈顶部?

请提出建议。

【问题讨论】:

完整理解singleTop,阅读this 感谢您的回复先生。我阅读了您给定的链接,但仍然感到困惑。你能告诉我上面的场景吗? singleTop 与标准相同,在您的情况下为 A->B->C->D->B :当从 D 重定向到 B 时,B 不会创建活动实例,因为它已经在堆栈中所以在堆栈历史中看起来像 B->C->D->A。 非常感谢先生 【参考方案1】:

启动模式singleTop仅适用于栈顶上的Activity。

让堆栈为A-B-C-D(D 在顶部)并且 D 是一个具有 singleTop 启动模式的活动。如果您将另一个实例添加到此堆栈,则 D 将不会再次实例化,并且 D 的现有实例将收到对 onNewIntent() 的回调。

堆栈:A-B-C-D

但是,如果堆栈类似于A-B-C-D-B(B 在顶部),然后您启动 D 的活动,那么它将简单地创建 D 的新实例并放在堆栈顶部。这是因为 D 不在栈顶。

堆栈:A-B-C-D-B-D

【讨论】:

感谢先生的宝贵回复。最后一个问题...如果堆栈是 A-B-C-D(D 在顶部)并且 B 是具有 singleTop 启动模式的活动,并且我从 Activity D 启动 Activity B 那么? 堆栈:A-B-C-D-B

以上是关于在多个活动之间启动singletop的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新启动活动的情况下切换主题(夜间模式)?

尝试在Android中使用按钮启动多个活动[重复]

有没有办法让 Android 摄像头记录通过多个活动?

Android第一行代码学习笔记五---隐式Itent启动其它程序的活动

singleTask 的多个活动

如何在 AndroidManifest 中指定多个活动,一个用于启动屏幕,一个用于 mainactivity - 将原始意图传递给 mainactivy