我们都知道Android中序列化有Serializable和Parcelable两种。
<p>对象的序列化:把对象转换为字节序列并存储至一个媒介的过程
<p>对象的反序列化:将字节序列恢复成对象的过程。
为什么要将对象序列化?
<pre>
永久性保存对象,保存对象的字节序列到本地文件中
通过序列化对象在网络中传递对象
-
通过序列化对象在进程间传递对象
</pre>Serializable的作用是将数据对象存入字节流中,在需要时重新生成对象,主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象。
implements Serializable接口的作用就是给对象打一个标记,系统会自动将其序列化。
区别:
最大的区别就是存储媒介的不同:
Serializable使用IO读写存储在硬盘上;
Parcelable是直接在内存中读写,内存的读写速度远大于IO读写,所以Parcelable高效。
- <u>在使用内存时,Parcelable比Serializable性能高,推荐使用Parcelable</u>;
- <u>Serializable在序列化时会产生大量的临时变量,会引起频繁的GC</u>;
- <u>Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcleable不能很好的保证数据的持续性</u>。在外界有变化的情况下,尽管Serializable效率低点,也不提倡使用,但在这种情况下,还是<u>建议使用Serializable</u>。