参考资料:
https://www.jianshu.com/p/a60b609ec7e7
笔记:
实现方式
Serializable
实现Serializable接口,并且定义seriaVersionUID,seriaVersionUID的作用是防止在反序列化的时候,由于原生类被修改了,而导致反序列化失败可以通过重写writeObject方法和readObject方法自定义序列化
transient标记的属性不会自动序列化
- Parcelable
实现Parcelable接口,重写writeToParcel方法和describeContents方法,并且定义静态变量CREATOR
性能
- Parcelable是将对象拆分成一系列小的模块,并将每一个模块放进Parcel中,主要用于在内存中传递对象,性能高
- Serializable是将对象转换成二进制流,主要用于数据持久化和网络传输,性能差,因为在反序列化时,需要用到反射
选择
- 如果只是在不同模块之间传递数据,不需要持久化,使用Parcelable,因为效率高
- 如果需要数据持久化,或者网络传输,使用Serializable