4

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

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

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

4

2 回答 2

2
  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的评论

于 2015-12-05T05:03:11.743 回答
0

这是因为活动生命周期的行为与 ICS 不同。这个事实回答了这个问题,但是我还没有弄清楚为什么会这样。如果有人想查看代码并自己验证此行为,请点击此处

于 2013-01-21T20:13:40.800 回答