【发布时间】:2012-11-19 14:22:22
【问题描述】:
我已竭尽全力将我的 Android 游戏的所有数据都放入 savedInstanceState Bundle。总共有很多数据,包括许多 Parcelable 对象。这样可以确保在应用暂停或方向更改时,重新创建的 Activity 不会丢失任何数据。
但是,我最近发现 savedInstanceState 包显然不适合长期存储。因此,我正在寻找一种可以调整现有保存方法以作为长期解决方案的方法,以便始终可以恢复游戏状态。
到目前为止,我听说过两种解决方案:
1) 使用 savedInstanceState 包进行方向更改,但也包含 SharedPrefs 以在应用需要完全关闭时使用。
这似乎会适得其反,因为它使用两种完全不同的方法来完成基本相同的事情。此外,由于我的 savedInstanceState Bundle 使用 Parcelable 对象,我必须为这些对象中的每一个提供另一种方法,以使它们能够写入 SharedPrefs。本质上是大量重复且难以管理的代码。
2) 序列化 savedInstanceState Bundle 并将其直接写入文件。
我对此持开放态度,但我实际上不知道如何去做。但是,我仍然希望有更好的解决方案,因为我听说 Android 中的序列化是“可笑/无法使用的缓慢”。
如果有人能为我提供解决方案,我将不胜感激。
【问题讨论】:
-
序列化只要找一个序列化类,应该不难找到。我在使用它时没有注意到任何令人难以忍受的延迟
-
我能找到的唯一信息告诉我我需要实现 Serializable - 但 Bundle 没有实现这个接口。
-
我推荐库github.com/iamironz/binaryprefs,它允许通过实现Persistable接口(jdk中的Externalizable接口)像标准java一样保存数据
标签: android save bundle sharedpreferences