在 Android 中持久化 Parcelable 对象
Posted
技术标签:
【中文标题】在 Android 中持久化 Parcelable 对象【英文标题】:Persisting a Parcelable object in Android 【发布时间】:2011-11-13 10:29:46 【问题描述】:我的 android 应用中有一个类,我已将其设为 Parcelable,以便可以在活动之间传递。
我希望能够将此对象保存到文件系统。似乎因为我已经实现了 Parcelable,所以将它的输出通过管道传输到文件系统并稍后再读回来是有意义的。
有没有正确的方法来做到这一点?或者,如果我想在活动之间传递对象并将其保存到文件系统,我必须同时实现 Parcelable 和 Serialiazble 吗?
【问题讨论】:
【参考方案1】:来自http://developer.android.com/reference/android/os/Parcel.html
Parcel 不是通用的序列化机制。此类(以及用于将任意对象放入 Parcel 的相应 Parcelable API)被设计为高性能 IPC 传输。因此,将任何 Parcel 数据放入持久存储是不合适的:Parcel 中任何数据的底层实现发生变化都可能导致旧数据不可读。
【讨论】:
【参考方案2】:针对这个问题,我做了以下操作:
-
在我的对象中实现了 Serializable
添加了 toJSON() 方法将对象转换为 JSON 对象
使用自定义 JSONSerializer 将 JSON 对象写入文件
添加了一个将 JSON 对象作为参数的构造函数,供自定义 JSONSerializer 使用
结果非常简单...如果需要,我可以粘贴一些示例代码。
【讨论】:
以上是关于在 Android 中持久化 Parcelable 对象的主要内容,如果未能解决你的问题,请参考以下文章
Android:在不使用 marshall() 的情况下从 Parcelable 到 Serializable 的任何快捷方式?
将 Parcelable 对象的 ArrayList 保存为持久数据?
Android中Serializable和Parcelable序列化对象详解
在 Room 数据库实体上实现 Parcelable 是一种好习惯吗?