• 转 序列化Serializable和Parcelable的区别详解


    什么是序列化,为什么要进行序列化

    答:对象要进行传输(如:activity 与activity间 ,网络间 进程间等等)、存储到本地就必须进行序列化 。

    这种可传输的状态就是序列化。

    怎么序列化??两种

    1.Serializable (java 自带)

    方法:对象继承 Serializable类即可实现序列化,就是这么简单,也是它最吸引我们的地方

    2.Parcelable(Android专用):Parcelable方式的实现原理是将一个完整的对象进行分解,用起来比较麻烦,但我们有工具,还是很简单的具体如下

    方法:1.继承 Parcelable

              2、复写两个方法,分别是describeContents和writeToParcel

              3、实例化静态内部对象CREATOR,实现接口Parcelable.Creator 。

    说不如做,直接上图上代码

     
     

    1-1

    如何选择

    选择序列化方法的原则

    1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。

    2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。

    3)Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点,但此时还是建议使用Serializable 。

    4)android上应该尽量采用Parcelable,效率至上,效率远高于Serializable

    综上所述:对于我们Android开发者来说,最好的还是用Parcelable序列化,就是写起来挺费事,没事我们是程序员自然有高端的办法

    Androidstudio 插件一键生成代码,实现Parcelable就是这么简单,图

    setting  -- pugins --输入par即可出来该插件。安装后重启androidstudio

     
     

    ok ,从此序列化就不担心了!



    作者:ifjgm
    链接:https://www.jianshu.com/p/1203ba41b0ac
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    [中英对照]INTEL与AT&T汇编语法对比
    用gdb理解C宏(#和##)
    Unix/Linux文件类型及访问权限
    apt-get
    查看ip地址信息和配置临时ip
    修改文件所有者 chown
    修改文件权限 chmod
    tar命令
    PHP magic_quotes_gpc
    chmod命令详细用法
  • 原文地址:https://www.cnblogs.com/mwl523/p/14121240.html
Copyright © 2020-2023  润新知