Serializable和Parcelable的区别

我们都知道Android中序列化有Serializable和Parcelable两种。

<p>对象的序列化:把对象转换为字节序列并存储至一个媒介的过程
<p>对象的反序列化:将字节序列恢复成对象的过程。

为什么要将对象序列化?

<pre>

  1. 永久性保存对象,保存对象的字节序列到本地文件中

  2. 通过序列化对象在网络中传递对象

  3. 通过序列化对象在进程间传递对象
    </pre>

    Serializable的作用是将数据对象存入字节流中,在需要时重新生成对象,主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象。
    implements Serializable接口的作用就是给对象打一个标记,系统会自动将其序列化。

区别:

最大的区别就是存储媒介的不同:
Serializable使用IO读写存储在硬盘上;
Parcelable是直接在内存中读写,内存的读写速度远大于IO读写,所以Parcelable高效。

  1. <u>在使用内存时,Parcelable比Serializable性能高,推荐使用Parcelable</u>;
  2. <u>Serializable在序列化时会产生大量的临时变量,会引起频繁的GC</u>;
  3. <u>Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcleable不能很好的保证数据的持续性</u>。在外界有变化的情况下,尽管Serializable效率低点,也不提倡使用,但在这种情况下,还是<u>建议使用Serializable</u>。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容