当android系统杀死进程声明内存时调用onSaveInstanceState吗?

时间:2014-09-01 22:30:05

标签: android

我在android上写了一个小游戏。它有一个活动+一个片段。我在Fragment.onSaveInstanceState中保存游戏状态并恢复Fragment.onCreateView中的状态。

如果我旋转屏幕,游戏状态会得到妥善保存。但是,如果我关闭屏幕并稍后返回游戏,有时我会失去游戏状态并获得新游戏。因此,我想知道当系统决定杀死一个恢复内存的进程时,是否会调用Fragment.onSaveInstanceState。另外,在Fragment.onSaveInstanceState中保存到Bundle中的东西的生命周期是多少?

顺便说一下,在开发过程中是否有容易测试这样的情况?等待一两天让系统杀死它会非常低效。

感谢您帮助我!

1 个答案:

答案 0 :(得分:0)

I wonder if Fragment.onSaveInstanceState is called at all when the system decides to kill a process

是的。它被称为。

我认为你的问题就在这里。来自文件:

  

活动与活动之间生命周期中最显着的差异   片段是如何将其存储在其各自的后栈中。一个   活动被放置在由其管理的活动的后台   系统默认停止时(以便用户可以   使用“后退”按钮导航回它,如任务和中所述   返回堆栈)。但是,片段被放置在托管的后栈中   仅当您明确请求时才由主机活动   通过在事务期间调用addToBackStack()来保存实例   删除片段。

不确定这是否可以解决您的问题,但我认为您在编写游戏代码时应牢记这一点。