本文主要是介绍Android必备回顾:5、谈谈Serializable 接口和Parcelable 接口的区别?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
Serializable 接口
Parcelable接口
内存中使用 Parcelable
持久化使用 Serializable
总结
谈谈Serializable 接口和Parcelable 接口的区别?
那么谈到这样的问题呢,我们平时在android 的开发过程中,那么主要用到的序列化手段,也就是这两种方式。
Serializable 接口
那么第一种方式是Serializable 接口,那么它是序列化的意思。这个单词本身就是序列化的意思。
它主要是java 中自带的,那么它表示将一个对象转换成可存储或可传输的状态。
那么序列化以后的对象可以在网络上进行传输,也可以存储到本地。
那么一般来说我们平时在使用过程中,更多的情况我们会使用 Serializable 来进行数据持久化的操作。
Parcelable接口
那么在安卓中呢,提出了 Parcelable 这样的序列化工具。
在我们安卓中这个 Parcelable 序列化这个工具,不同于之前的我们的Serializable。
其主要的一个最重要的部分。就是它用于分解后的每一部分,它对我们一个对象进行分解。那么在分解以后呢,它的每一部分都是 intent 所支持的所有的数据类型。
那么这样呢,也就实现了传递对象这样的功能了。
当然他要做持久化也是可以做的。但是他持久化这个方面呢有很多弊端。
那么这里呢,我们可以一起来看一下我们选择序列化方法的这个原理。
我们怎么去选择这两种不同的序列化呢?
内存中使用 Parcelable
如果说我们在使用内存情况下,使用内存来进行序列化传输的时候,我们使用 Parcelable 它会比 Serializable 的性能会要高。所以我们推荐使用 Parcelable。那么主要原因:是因为它是对一个对象进行分解,并且分解以后它每一部分内容 intent 都是可以支持的数据类型。
持久化使用 Serializable
那么我们的 Serializable 呢?
它更趋向于使用一种二进制的方式进行一个序列化的动作。那么 Serializable 它在序列化的时候会产生大量的临时变量,那么从这个中间呢,它会引起频繁 GC 的操作。
所以我们在内存中,比方说我们从 activity a 传一个对象到 activity b 的过程中。那么这个对象传输过程中,如果你去使用 Serializable,你会发现:会有很多临时变量产生。那么这样的话,它的性能相对就会较低一些。所以我们会考虑,只要是在程序中进行对象的传输,需要序列化的地方,我们都使用Parcelable, 那么这是在安卓这一块的。
好,那么如果说我们在持久化时,那么在持久化的过程中呢?
Serializable 它的持久化占用的存储空间,会比 Parcelable 要小一些,那么它是直接转换成我们的二进制的方式。
那么在反序列化的过程中,我们的 Serializable 它也不会因为对象的增减字段,而造成这种反序列化的失败。
总结
所以我们一般来说在持久化对象的时候,会建议大家使用是Serializable。那么并且它存在我们的文件中,那么这个占用的磁盘空间也会更小一些。虽然说它的性能没有我们的 Parcelable 那么高。
所以 Parcelable 这种序列化方式主要用在内存使用情况,而我们的 Serializable 呢主要用在持久化这种情况。
Serializable 它在序列化的时候会产生大量的临时变量,可能会引起频繁 GC 的操作,消耗内存,性能相对就会较低一些。所以内存中使用Parcelable
Serializable 它的持久化占用的存储空间,会比 Parcelable 要小一些,它是直接转换成我们的二进制的方式。
那么在反序列化的过程中,我们的 Serializable 它也不会因为对象的增减字段,而造成这种反序列化的失败。
这篇关于Android必备回顾:5、谈谈Serializable 接口和Parcelable 接口的区别?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!