我花费了很大的力气使得我的Android游戏的所有数据都适应于savedInstanceState Bundle。一共有很多数据,包括许多可 Parcelable 对象。这确保了当应用程序暂停或方向改变时,通过重新创建 Activity,不会丢失任何数据。
然而,最近我才发现 savedInstanceState bundle 显然不适合长期存储。因此,我正在寻找一种方法来适应我的现有保存方法,以便作为长期解决方案工作,以便始终可以还原游戏状态。
到目前为止,我听说过两种解决方案:
1) 在方向更改时使用 savedInstanceState bundle,但在完全关闭应用程序时也结合使用 SharedPrefs。
这似乎非常低效,因为它使用了两种完全不同的方法来做基本上相同的事情。此外,由于我的 savedInstanceState Bundle 使用 Parcelable 对象,我将不得不为每个对象提供另一种方法,以使它们能够被写入 SharedPrefs。实际上是大量重复的和难以管理的代码。
2) 序列化 savedInstanceState Bundle 并直接将其写入文件。
我对此持开放态度,但我实际上不知道该怎么做。然而,我仍然抱着希望,因为我听说在 Android 中序列化是“可笑的/无法使用的缓慢”。
如果有人能够为我提供解决方案,我将非常感激。