【问题标题】:Again on Activity lifecycle: onStart is called when it shouldn't be再次在 Activity 生命周期中: onStart 在不应该被调用时被调用
【发布时间】:2012-05-08 00:27:03
【问题描述】:

首先,我阅读了great explanation of how the activities start, suspend, resume and stop。没关系,但我还有一个问题。

Android reference 中的 Activity 生命周期图告诉我,如果我调用另一个 Activity,将为调用的 Activity 调用 onPause(),稍后,当另一个 Activity 结束时,调用者将通过 onResume() 恢复.

因此,如果第一个活动是 Main 而另一个是 Other,则循环将如下所示(伪代码):

Main.onCreate()
Main.onStart()
Main.onResume()
// Main is running...  Then, the user clicks a button and Other comes in front.
Main.onPause()
Other.onCreate()
// Other's lifecycle goes here... Finally, the user returns back.
Main.onResume()
// Main is running again.

这就是图表所说明的。但是我的 Main 先是 onStart(),然后是 onResume()。

这是为什么呢?我是不是误会了什么?

【问题讨论】:

    标签: android android-activity android-lifecycle


    【解决方案1】:

    发生这种情况是因为您的 Main 活动完全从视图中消失,这会触发 onStop,当您恢复时会触发 OnStart。如果您只是从 Main 中隐藏了部分视图,您将只能获得 onResume。

    如果您查看图表,在 onPause 和 onStop 之间,有这个“活动不再可见”......这就是您遇到的情况。

    为了快速参考,活动生命周期图:

    【讨论】:

    • 感谢您提醒查看图表。我总是忘记检查这个。解决了我的问题。
    【解决方案2】:

    您的onStart() 被主应用程序调用的一个原因是您的主活动正在停止。那就是它的onStop() 正在被调用。在这种情况下,首先会调用onStart(),然后会调用onResume()

    【讨论】:

      猜你喜欢
      • 2017-09-05
      • 2023-03-14
      • 1970-01-01
      • 2011-12-04
      • 2021-11-25
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多