0

我的 android 游戏在数组列表中保存关卡布局数据。在测试我的关卡加载器时,我注意到有时我的关卡无法加载,只留下一个黑屏。起初我认为这可能是我的纹理没有重新加载,但我通过绘制一个与 ArrayList 分开的对象来证明这是错误的,它绘制得很好。接下来我使用了一个 Log 标签来检查我的 ArrayList 的大小。当我按下 home 然后重新打开我的应用程序时,Log 标签开始返回零大小,这意味着我的所有数据都已丢失。现在我真的不想每次调用 onPause 时都从文件中加载关卡数据,所以有没有办法保留 ArrayList 中保存的数据?

4

1 回答 1

1

问题是您可能正在收集垃圾(即,由于内存问题,您的暂停正在成为破坏)。在 Activity 中实现onSaveIntstanceStateonRestoreInstanceState方法,看看是否能解决问题。

Num1 在我认为值得指出的评论中提出了一个很好的观点。请注意,捆绑包应包含少量数据。如果您的 ArrayList 很大,这可能就是您的活动在同一个地方收集垃圾的原因。如果是这种情况,您有两种选择之一。在 onDestroy 方法中将数据显式存储在您自己的磁盘上(这样您只在真正需要时才这样做,写入磁盘可能需要一段时间),或者当您的活动重新成为焦点时重新计算这些内容。这只是一件好事。

于 2011-10-22T19:47:42.517 回答