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



我有一个具有4个活动的应用程序,按顺序说A->B->C->D和一个服务S,该服务在应用程序启动时由A启动。现在在一个特定的条件下,这个服务触发一个通知,再次应该启动活动C在我的应用程序和参数C通常需要从B。同样为了正常工作,C需要使用来自活动a 的静态变量。

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

谁能告诉我这种行为的原因?我想要运行我的活动C作为一个相互依赖的任务。我希望它与应用中已经存在的实例相同。请帮助我理解这里的问题。
  1. 活动应该是独立的。 activity C needs to use a static variable from the activity A 是危险的。虽然你创建活动的顺序像A->B->C->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. 的注释

这是因为活动生命周期的行为与ICS不同。这个事实回答了这个问题,但是我还没有发现为什么会发生这种情况。如果有人想查看代码并亲自验证此行为,请点击HERE

最新更新