为网络和/或持久存储序列化Android捆绑包?

为网络和/或持久存储序列化Android捆绑包?,android,bundle,Android,Bundle,我需要序列化一个全面的应用程序(游戏)状态,以便通过网络传输或保存到磁盘并在以后检索 当然,bundle用于在多个用例中保存/恢复状态,因此使用它们将是理想的选择。然而,由于某些原因,包是不可序列化的 搜索解决方案只发现了一种不可接受的方法,即将捆绑包变成一个包裹,然后进行编组,但这不是一种可接受的解决方案,因为无法保证以后或在远程设备上可以解组数据 现在看来,唯一的解决方案似乎是从Bundle中获取整个密钥集,获取每个包含的对象,在每个对象上执行一个相当大的开关/大小写。类,然后从所有这些数据

我需要序列化一个全面的应用程序(游戏)状态,以便通过网络传输或保存到磁盘并在以后检索

当然,bundle用于在多个用例中保存/恢复状态,因此使用它们将是理想的选择。然而,由于某些原因,包是不可序列化的

搜索解决方案只发现了一种不可接受的方法,即将捆绑包变成一个包裹,然后进行编组,但这不是一种可接受的解决方案,因为无法保证以后或在远程设备上可以解组数据

现在看来,唯一的解决方案似乎是从Bundle中获取整个密钥集,获取每个包含的对象,在每个对象上执行一个相当大的开关/大小写。类,然后从所有这些数据手动构造一个巨大的ByteBuffer或类似的,以及尺寸和类型信息,以便成功地在另一边重建整个东西

不是很顺利


有人知道更好的方法吗?也许有人已经为Bundle创建了一个实用函数来实现这一点?

好问题!我想知道您是需要序列化整个包还是只序列化包含的信息?可能您只需要可以保存在任何类型(字符串、列表或数组)中的信息。看看的子类,它是humongous

这只是安卓的一个愚蠢的点。如前所述,BundleParcelable是DoableCore(和ParcelableBinary),但Parcelable仅设计用于非持久性使用。应该包括一些持久的BundleXML或BundleJSON(或者任何东西,真的)。。我见过的“最佳”解决方案就是将一些JSON插入到Bundle属性中,否则Bundle就会慢慢消失。