2014-09-01 69 views
0

我在android上写了一个小游戏。它有一个活动+一个片段。我将游戏状态保存在Fragment.onSaveInstanceState中并恢复Fragment.onCreateView中的状态。当android系统杀死进程声明内存时调用onSaveInstanceState?

如果我旋转屏幕,游戏状态将被正确保存。但是,如果我关闭屏幕并在稍后再回到游戏中,有时我会失去游戏状态并改为新游戏。因此,我想知道当系统决定杀死一个进程来恢复内存时,是否调用Fragment.onSaveInstanceState。另外,在Fragment.onSaveInstanceState中保存到Bundle中的东西的寿命是多少?

顺便问一下,在开发过程中是否有轻松测试这种情况?系统等待一两天才能杀死它是非常低效的。

感谢您的帮助!

回答

0

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

是的。它被称为。

我觉得你的问题是介于here.From文件:

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

不知道这是否可以解决您的问题,但我认为在编写游戏代码时应该牢记它。