Android 包裹,存储在内存中还是磁盘上?如何存储在磁盘上
Posted
技术标签:
【中文标题】Android 包裹,存储在内存中还是磁盘上?如何存储在磁盘上【英文标题】:Android parcel, stored in memory or on disk? How to store on disk 【发布时间】:2012-05-13 07:00:14 【问题描述】:我看到 parcel 和 serializable 可以互换使用,或者至少在同一上下文中不直观。你能帮我澄清一些事情吗?
是包裹的持久存储(在磁盘上)或仅存储在内存中
我是否需要可序列化才能将宗地数据存储到磁盘
感谢您的洞察力,不,android 开发手册并没有让我明白这一点
【问题讨论】:
【参考方案1】:我的回答:
Parcel 用于扁平化对象,因此它们可以存储在 JVM 运行内存之外的其他位置。
您不需要将可序列化与包裹混合以将数据存储到磁盘。一个或另一个就足以将对象存储到磁盘。
Serializable 和 Parcelable 都是扁平化 Java 对象的方法。
这些扁平化的对象可以通过各种传输格式在进程之间传递——包括磁盘文件。
Serializable 来自核心 Java,易于使用。
Parcelable 来自 Android,稍微复杂一些。
此答案包含更多详细信息:
https://***.com/a/5551155/523135
这篇博文有示例代码 Parcelable:
http://blog.cluepusher.dk/2009/10/28/writing-parcelable-classes-for-android/
这篇博文有示例可序列化代码:
http://www.javapractices.com/topic/TopicAction.do?Id=45
【讨论】:
【参考方案2】:阅读包裹文档。包裹不应放置在持久存储中。
摘录:
"...Parcel 不是通用的序列化机制。这个类(以及用于将任意对象放入 Parcel 的相应 Parcelable API)被设计为高性能 IPC 传输..."
"... 将任何 Parcel 数据放入持久存储中是不合适的:Parcel 中任何数据的底层实现的更改都可能导致旧数据不可读。"
http://developer.android.com/reference/android/os/Parcel.html
【讨论】:
以上是关于Android 包裹,存储在内存中还是磁盘上?如何存储在磁盘上的主要内容,如果未能解决你的问题,请参考以下文章