• 转 序列化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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    OpenStack云桌面系列【2】—OpenStack和Spice
    Java中的读写锁 ReentrantReadWriteLock
    Spring Boot Actuator 监控实践
    java子线程中获取父线程的threadLocal中的值
    String源码解析
    Java基础一
    Java 8 Lambda表达式实现原理解析
    Rabbit MQ总结
    AtomicInteger及CAS源码解析
    Queue(队列)接口和其实现类PriorityQueue(优先级队列)源码解析
  • 原文地址:https://www.cnblogs.com/mwl523/p/14121240.html
Copyright © 2020-2023  润新知