Android序列化

提问:
什么是序列化?
为什么要序列化?
为什么要使用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

你可能感兴趣的:(Android序列化)