在多个活动之间启动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第一行代码学习笔记五---隐式Itent启动其它程序的活动
如何在 AndroidManifest 中指定多个活动,一个用于启动屏幕,一个用于 mainactivity - 将原始意图传递给 mainactivy