对象的传递为啥要 序列化 呢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象的传递为啥要 序列化 呢相关的知识,希望对你有一定的参考价值。
参考技术A Intent在启动其他组件时,会离开当前应用程序进程,进入ActivityManagerService进程(intent.prepareToLeaveProcess()),这也就意味着,Intent所携带的数据要能够在不同进程间传输。
首先我们知道,android是基于Linux系统,不同进程之间的java对象是无法传输,
所以我们此处要对对象进行序列化,从而实现对象在 应用程序进程 和 ActivityManagerService进程 之间传输。
Android Intent传递对象为什么要序列化?
为什么?
a.永久性保存对象,保存对象的字节序列到本地文件中
b.对象可以在网络中传输
c.对象可以在IPC之间传递(进程间通信)
那选哪个序列化?
1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。
2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
3)Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点,但此时还是建议使用Serializable 。
4)Serializable是Java中的序列化接口,其使用起来简单但是开销很大,序列化和反序列化过程需要大量IO操作。而Parcelable是Android中序列化方式,因此更适合用在Android平台上,它的缺点是使用起来稍微复杂一点,但是因为有一套模板,所以这点复杂还是可以接受的,而且它的效率很高,这也是Android推荐的序列化方式,因此在Android平台上首选Parcelable。
以上是关于对象的传递为啥要 序列化 呢的主要内容,如果未能解决你的问题,请参考以下文章