【问题标题】:Launch singleTop between multiple activites在多个活动之间启动singletop
【发布时间】: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。
  • 非常感谢先生

标签: android android-activity launchmode


【解决方案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
猜你喜欢
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 2012-11-23
  • 1970-01-01
相关资源
最近更新 更多