提问:
什么是序列化?
为什么要序列化?
为什么要使用Parcelable?
Parcelable与Serializable的区别?
1. 序列化 :
序列化是一个过程,是将对象状态转成可以存储或者传输的过程。
2. Android中对象序列化的目的:
- 用于进程之间的对象传递;
- 用于网络之间的对象传递;
- 用于存储,实现数据的持久化
3. 关于Parcelable
Parcelable:
Interface for classes whose instances can be written to and restored from a Parcel.
可以在Parcel中写入实例并从其中恢复的类的接口。
image.png
根据官方文档的说明,我们可以知道
- IBinder是传输的载体;
- google将其设计为高性能的IPC传输
- 不适合将任何Parcel数据放入持久存储中
4. Parcelable与Serializable
- Android中推荐使用Parcelable,在内存占用(Parcelable开销小)以及性能方面优于 Serializable;Parcelable在内存中直接进行读写,而Serializable是通过IO流的形式将数据读写入在硬盘上,内存读写速度>硬盘读写速度,因此更适用于Android中Activity传输数据;
- Serializable序列化时会产生大量的临时变量,引起频繁的GC;
- 上面已经提到,Parcelable不适合保证数据的持续性,因此当要存储时还是选择Serializable。
参考:https://developer.android.com/reference/android/os/Parcel.html
网友评论