我看到parcel和serializable有些互换使用,或者至少在同一语境下不是很直观。你能帮我澄清一些问题吗?
- parcel是持久存储(在磁盘上)还是仅存在内存中?
- 我是否需要serializable将parcel数据存储到磁盘中?
我的回答:
Parcel是为了将对象展平,以便可以将它们存储在JVM的运行内存之外。
您不需要将序列化与包裹混合使用来将数据存储到磁盘中。其中一个就足以将对象存储到磁盘中。
Serializable和Parcelable都是展平Java对象的方法。
这些展平的对象可以通过各种传输格式(包括磁盘文件)在进程之间传递。
Serializable来自核心Java,易于使用。
Parcelable来自Android,稍微复杂一些。
这个答案包含更多细节:
https://dev59.com/8m035IYBdhLWcg3wNtRw#5551155
此博客文章提供了Parcelable的示例代码:
http://blog.cluepusher.dk/2009/10/28/writing-parcelable-classes-for-android/
此博客文章提供了Serializable代码的示例:
http://developer.android.com/reference/android/os/Parcel.html