Serialiazable是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,也可以进行两个程序之间的传输。
Pracelable设计为了解决Serializable效率过慢,为了程序在不同组件间以及不同Android程序之间高效传输数据。
Pracelable性能比Serializable好,在内存开销方面较小(Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC),所以在内存间传数据时推荐使用Parcelable。
如果在activity间传输数据,Serializable可将数据持久化保存,所以需要保存或者网络传输数据是选择Serializable。因为Android版本不同Parcelable可能不同,座椅不推荐使用Parcelable进行数据持久化。
对于Serializable而言,类只需实现Serializable接口,并提供一个序列化版本id即可。
对于Parcelable需要实现writeToParcel、describeContents函数以及静态的CREATEOR变量,实际上就是将如何打包和解包来自己定义,而序列化的这些操作完全由底层实现。