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

posted @ 2020-12-11 16:51  mao的博客  阅读(749)  评论(0编辑  收藏  举报