【问题标题】:Serializing Android Bundle for network and/or persistent storage?为网络和/或持久存储序列化 Android Bundle?
【发布时间】:2010-08-04 09:48:52
【问题描述】:

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

当然,Bundles 用于在多个用例中保存/恢复状态,因此使用它们是理想的选择。但是,出于某种原因,Bundle 不可序列化。

搜索解决方案只发现了将 Bundle 转换为 Parcel 然后对其进行编组的不可接受的黑客攻击,但这不是一个可接受的解决方案,因为无法保证以后可以解组数据日期或在远程设备上。

所以现在看来​​,唯一的解决方案似乎是从 Bundle 中获取整个密钥集,获取每个包含的 Object,在每个 Object.Class 上执行相当大的 switch/case 并手动构造一个巨大的 ByteBuffer 或与所有这些数据相似,以及大小和类型信息,以便在另一侧成功地重建整个事物。

不完全平滑。

有人知道更好的方法吗?也许有人已经为 Bundle 创建了一个实用函数来执行此操作?

【问题讨论】:

  • 这只是Android的一个愚蠢的观点。如前所述,BundleParcelable 是可行的核心(和 ParcableBinary),但 Parcelable 仅设计用于非持久使用。应该包含一些持久的 BundleXML 或 BundleJSON(或任何东西,真的).. 我见过的“最佳”解决方案只是将一些 JSON 推入 Bundle 属性,否则让 Bundle 爬走然后死去。

标签: android bundle


【解决方案1】:

好问题!我想知道您是否需要序列化整个捆绑包或只序列化包含的信息?可能您只需要可以保存为任何类型(字符串、列表或数组)的信息。看一下java.io.Serializable 的子类,这太棒了。

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 2015-09-21
    • 2014-10-07
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多