不寻常的android活动生命周期

时间:2015-06-01 17:58:54

标签: android android-activity lifecycle

我写了一个游戏,在市场的日志中,我有时会看到以下模式:

06:02:13:835|INFO|1|MainActivity|MainActivity#2.OnCreate
06:02:13:932|INFO|1|MainActivity|MainActivity#2.OnStart
06:02:14:010|INFO|1|MainActivity|MainActivity#2.OnResume
...
06:09:27:688|INFO|1|MainActivity|MainActivity#2.OnPause
06:09:28:895|INFO|1|MainActivity|MainActivity#3.OnCreate
06:09:29:159|INFO|1|MainActivity|MainActivity#3.OnStart
06:09:29:319|INFO|1|MainActivity|MainActivity#3.OnResume
06:09:29:551|INFO|1|MainActivity|MainActivity#2.OnStop
06:09:29:596|INFO|1|MainActivity|MainActivity#2.OnDestroy

MainActivity实例#3在MainActivity实例#2被销毁之前创建并启动。这种模式意味着什么?为什么新实例在之前被破坏之前就开始了?

显然我不是手工制作活动。用户只需点击图标即可开始游戏(至少我希望如此)。

Activity具有singleTask启动模式。

谢谢!

2 个答案:

答案 0 :(得分:1)

无法保证调用onDestroy回调。来自docs

  

onDestroy()=您在活动开始前收到的最终通话   销毁。这可能是因为活动正在结束   (有人称之为finish(),或者因为系统是暂时的   销毁此活动实例以节省空间。您可以   使用isFinishing()方法区分这两种情况。

答案 1 :(得分:1)

假设您的应用程序有两个活动。那么这就是生命周期

enter image description here

如果显式调用finish(),将调用

onDestroy ;如果你按下返回按钮,你自己或喜欢这个例子,因为按回键实际上会激活你的活动的finish()方法,并导致你的活动被暂停 - >停止 - >销毁