浅谈serializable和parcelable
2016-09-03 13:08
281 查看
serializable接口
parcelable接口
-在该类中实现如下声明:
private static final long serialVersionUID = 8711368828010083044L
-接下来利用ObjectOutputStream和ObjectInputStream即可实现对象的序列号和反序列化操作。
注意:serialVersionUID也不是必需的,不声明它也同样可以实现序列号,但是会对反序列化过程产生影响。
Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。
对于Serializable,类只需要实现Serializable接口,并提供一个序列化版本id(serialVersionUID)即可。而Parcelable则需要实现writeToParcel、describeContents函数以及静态的CREATOR变量,实际上就是将如何打包和解包的工作自己来定义,而序列化的这些操作完全由底层实现。
Serializable序列化不保存静态变量,可以使用Transient关键字对部分字段不进行序列化,也可以覆盖writeObject、readObject方法以实现序列化过程自定义
parcelable接口
serializable接口
serializable是Java所提供的一个序列号接口。它是一个空接口,为对象提供标准的序列号和反序列化操作。serializable接口的实现步骤
-将这个类实现serializable接口-在该类中实现如下声明:
private static final long serialVersionUID = 8711368828010083044L
-接下来利用ObjectOutputStream和ObjectInputStream即可实现对象的序列号和反序列化操作。
注意:serialVersionUID也不是必需的,不声明它也同样可以实现序列号,但是会对反序列化过程产生影响。
parcelable接口
Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。
对于Serializable,类只需要实现Serializable接口,并提供一个序列化版本id(serialVersionUID)即可。而Parcelable则需要实现writeToParcel、describeContents函数以及静态的CREATOR变量,实际上就是将如何打包和解包的工作自己来定义,而序列化的这些操作完全由底层实现。
Serializable序列化不保存静态变量,可以使用Transient关键字对部分字段不进行序列化,也可以覆盖writeObject、readObject方法以实现序列化过程自定义
相关文章推荐
- Android 序列化 Parcelable和Serializable 浅谈
- 浅谈Serializable与Parcelable
- 浅谈 Parcelable与Serializable的区别
- 序列化与反序列化两种实现方式区别(Parcelable和Serializable)
- serializable和Parcelable
- Intent传递对象——Serializable和Parcelable差别
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- [android] Serializable 和 Parcelable 区别
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Serializable 和 Parcelable 区别
- Android 序列化Serializable、Parcelable
- android86--Parcelable 和Serializable
- IPC通信基础介绍之Serializable和Parcelable详解
- [android] Serializable 和 Parcelable 区别
- Android java.lang.RuntimeException: Parcelable encountered IOException writing serializable object
- Android-Intent传递对象序列化之Serializable与Parcelable
- Serializable和Parcelable
- Android传递对象的两种方法,(Serializable,Parcelable)
- Android序列化:Serializable & Parcelable
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数