我写了一个游戏,在市场的日志中,我有时会看到以下模式:
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启动模式。
谢谢!
答案 0 :(得分:1)
无法保证调用onDestroy回调。来自docs:
onDestroy()=您在活动开始前收到的最终通话 销毁。这可能是因为活动正在结束 (有人称之为finish(),或者因为系统是暂时的 销毁此活动实例以节省空间。您可以 使用isFinishing()方法区分这两种情况。
答案 1 :(得分:1)
假设您的应用程序有两个活动。那么这就是生命周期
如果显式调用finish(),将调用
onDestroy ;如果你按下返回按钮,你自己或喜欢这个例子,因为按回键实际上会激活你的活动的finish()方法,并导致你的活动被暂停 - >停止 - >销毁