Android面试专题(七):Serializable 和 Parcelable 的区别
不诗意的女程序媛不是好厨师~
转载请注明出处,From李诗雨—https://blog.csdn.net/cjm2484836553/article/details/105161472
首先,我要强行加个图,哈哈哈哈哈~
面试官:“说一下Serializable接口和Parcelable接口的区别吧。”
我们可以从以下两方面来说一说~
首先我们先给两者来个简单的介绍:
1.定义Serializable(Java自带):
Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。
Parcelable(android 专用):
除了Serializable之外,使用Parcelable也可以实现相同的效果,
不过不同于将对象进行序列化,Parcelable方式的实现原理是将一个完整的对象进行分解,
而分解后的每一部分都是Intent所支持的数据类型,这样也就实现传递对象的功能了。
当然,光说这一点还是有点少,讲的不够深入不说,而且还达不到拖延时间的效果,所以我们还可以从下面这一点来接着唠:
2.选择序列化方法的原理:既然二者都是用作序列化的,那我们该如何来选择呢?标准如下:
内存中使用Parcelable
原因解释: 内存中使用Parcelable性能比较高,主要原因是Parcelable是对一个对象进行分解,它分解后的每一部分内容,intent都是可以支持的。
而Serilalizable更趋向于使用二进制的方式进行序列化的动作。
并且Serializable在序列化的时候会产生大量的临时变量,进而会引起频繁GC的操作,
所以我们在内存中,比如说从Activity A 传一个对象 给Activity B的过程中,如果使用Serilalizable,会有很多临时变量产生进而降低了性能。
所以,在内存中,只要我们是进行对象的传输,我们就是用Parcelable。
持久化使用Serializable
原因解释: 在持久化的过程中Serializable占用的存储空间比Parcelable要小一些,因为它是直接转换成我们的二进制的形式。Serializable也不会因为对象的增减字段而造成反序列化的失败,所以在持久化的时候建议大家使用Serializable,并且它是存放在文件中的,占用的磁盘空间也更小一些。
积累点滴,做好自己~
作者:李诗雨
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341