再次在Activity生命周期中:onStart在它不应该被调用时被调用

时间:2012-05-07 16:10:28

标签: android android-activity android-lifecycle

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

Android reference中的Activity生命周期图表明,如果我调用另一个活动,将为调用活动调用onPause(),稍后当另一个活动结束时,调用者将通过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()。

为什么?我误解了什么吗?

2 个答案:

答案 0 :(得分:5)

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

如果你看一下onPause和onStop之间的图表,就会出现“活动不再可见”......这就是你所遇到的。

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

enter image description here

答案 1 :(得分:1)

主要应用程序调用{​​{1}}的一个原因是您的主要活动正在停止。那就是它被调用onStart()。在此方案中,首先会调用onStop(),然后调用onStart()