从通知启动活动会破坏父活动

时间:2013-01-17 09:46:34

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

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

现在发生的情况是从服务 S 触发通知并点击它,活动 A B 会自动销毁导致力关闭(因为我的活动 C 取决于A 中的静态变量)。为什么会这样呢?我使用TaskStackBuilder C的父活动(即 B )放到堆栈上,以便正常的反向行为将我带回活动 B < / strong>即可。

任何人都可以告诉我这种行为的原因。我想要将我的活动 C 作为相互依赖的任务运行。我希望它与应用程序中已有的实例相同。 请帮我理解这里的问题。

2 个答案:

答案 0 :(得分:2)

  1. 活动应该是独立的。 activity C needs to use a static variable from the activity A 是危险的。虽然您按照 A-> B-> C-&gt; D 的顺序创建活动,但当您的应用处于后台时,以及当用户返回时,Android可能会销毁A / B / C / D.您的应用,只会重新创建活动D.

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

  3. 的评论

答案 1 :(得分:0)

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