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