【问题标题】:Starting an Activity from Notification destroys Parent Activities从通知启动活动会破坏父活动
【发布时间】:2013-01-17 09:46:33
【问题描述】:

我有一个应用程序,其中包含 4 个活动,顺序为 A->B->C->D 和一个由 A 启动的服务 S 应用程序启动时。现在在特定条件下,该服务会触发一个通知,该通知应该再次启动活动 C 与我的应用程序以及 C 通常需要来自 B 的参数.此外,为了正常运行,C 需要使用活动 A 中的静态变量。这就是设置。

现在发生的情况是,当通知从服务 S 触发并且我点击它时,活动 AB 会自动销毁导致强制关闭(因为我的活动 C 取决于 A 中的静态变量)。为什么会发生这种情况。我使用TaskStackBuilderC 的 父活动(即 B)放到堆栈上,以便正常的返回行为将我带回活动 B

谁能告诉我这种行为的原因。我不想将我的 Activity C 作为相互依赖的任务运行。我希望它与应用程序中已有的实例相同。 请帮助我理解这里的问题。

【问题讨论】:

  • 添加一些代码,以便有人能够找到问题
  • 太乱了。!没有得到真正的问题。
  • @SahilMahajanMj 当我单击通知开始活动 C 时,它正在破坏我的 Acitites A 和 B。这就是问题
  • @SahilMahajanMj 在正常的工作流活动 B 启动活动 C
  • @Ricky 你使用什么标志从 B 开始活动 C。它类似于 FLAG_ACTIVITY_CLEAR_TASK。? Destroying 到底是什么意思?这是否意味着强制关闭或只是活动终止。?

标签: android android-activity android-service android-notifications


【解决方案1】:
  1. 活动应该是独立的。 activity C needs to use a static variable from the activity A 很危险。尽管您按照 A->B->C->D 的顺序创建 Activity,但 Android 可能会在您的应用处于后台以及用户返回您的应用时破坏 A/B/C/D,只有活动 D 被重新创建。

  2. 我曾经遇到过和你一样的问题,Starting an Activity from Notification destroys Parent Acitivities。这是因为我使用了 TaskStackBuilder。即使在我停止使用 TaskStackBuilder 之后,问题仍然存在。只有在我卸载该应用程序后,它才能按预期工作。 检查 https://stackoverflow.com/a/28268331/1198666 的 cmets

【讨论】:

    【解决方案2】:

    发生这种情况是因为 Activity 生命周期的行为与 ICS 之后的行为不同。这个事实回答了这个问题,但是我还没有弄清楚为什么会这样。如果有人想查看代码并亲自验证此行为,HERE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      相关资源
      最近更新 更多