美文网首页
Parcelable和Serializable区别

Parcelable和Serializable区别

作者: 聪聪的豆芽 | 来源:发表于2016-08-24 21:40 被阅读15次

    1、作用

    Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。
    从上面的设计上我们就可以看出优劣了。

    2、效率及选择

    Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化

    3、区别

    基本上就是Parcelable是内存序列化,快速,但是持久化麻烦(不建议),Serializable属于I/O级别序列化和反序列化,可以持久化保存。


    区别

    4、Serializable中serialVersionUID

    serialVersionUID默认的话如果删除或修改了成员变量,会导致当前类hash值赋值给serialVersionUID和以前hash不一样导致反序列化失败。指定的话很大程度避免反序列化失败。但是如果类发生了非常规性改变,比如修改了类名,修改了成员变量的类型,尽快serialVersionUID验证通过,反序列化还是会失败,再者就是静态成员变量和transient关键字标记的成员变量不参与序列化过程。

    相关文章

      网友评论

          本文标题:Parcelable和Serializable区别

          本文链接:https://www.haomeiwen.com/subject/pwuosttx.html