【问题标题】:onStart of new Activity is called before onStop of parent新活动的 onStart 在父活动的 onStop 之前被调用
【发布时间】:2013-06-17 08:35:13
【问题描述】:

我有一个申请。我使用startActivity() 开始活动。

谁能真正告诉我为什么系统首先调用新活动的onStart(),而不是父母onStop()?这甚至可能吗(没有系统错误)?

我找到了Fragment onStop() being called directly after onStart() - WHY? 的答案,但我与 Fragments 和使用 android-support 库没有任何共同之处。我被卡住了,因为我使用的是 RoboSpice,它必须在 onStart 和 onStop 中包含正确的同步方法。我不能,因为系统以错误的顺序调用它。

我也在这个应用程序中使用 GCM 和 Analytics 库。

【问题讨论】:

  • 你在使用 tabgroupActivity 吗?

标签: android android-fragments android-activity lifecycle robospice


【解决方案1】:

如果您阅读过Activity Lifecycle documentation onStop,则仅当当前活动被新的(或以前的)活动替换时才会调用。

为此,必须启动或恢复其他应用程序...否则会有间隙

当前活动的onPause(我希望)在替换活动的onStart之前调用

【讨论】:

  • 现在我明白了,第二次、第三次(等等)阅读文档总能带来新的知识。 onStop() 是“当活动不再对用户可见时调用,因为另一个活动已恢复”
  • 我花了很长时间才发现 onPause 也可能比 onStop 更有用:)
  • 是的,在onPause() 和onStop() 之间玩游戏可能会以有趣的方式结束。我知道将 RoboSpice 的 start() 和 shouldStop() 放在 onResume() 和 onPause() 可能不是一个好主意,但它是(目前)在活动之间仅共享一个 RoboManager 实例的唯一方法。 (对于未来的答案)
  • 此外,在 onPause() 函数的文档中,他们说:“在收到此调用 (ndlr "onPause()") 后,您通常会收到对 onStop() 的以下调用(在下一个活动已恢复并显示)”。
猜你喜欢
  • 2012-11-14
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
相关资源
最近更新 更多