Android开发中经常需要用到 序列化 ,系统提供了两个接口用来实现,
· Parcelable
· Serializable
今天说下这两个接口在实现上有什么区别
Serializable
Serializable是 Java 提供的接口,用来标识某一个类可以被序列化,用起来非常简单,只需要 implement 这个接口,提供get/set方法就可以
Parcelable
Parcelable是Android为了序列化而专门设计的接口类,效率比 Serializable更高。实现 Parcelable的demo像以下这样,
public class Girl implements Parcelable { private int mAge; // 年龄 private boolean mSexy; // 是否性感 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mAge); dest.writeByte((byte) (mSexy ? 1 : 0)); } public static final Parcelable.Creator<Girl> CREATOR = new Parcelable.Creator<Girl>() { public Girl createFromParcel(Parcel in) { Girl girl = new Girl(); girl.mAge = in.readInt(); girl.mSexy = in.readByte() != 0; return girl; } public Girl[] newArray(int size) { return new Girl[size]; } }; @Override public int describeContents() { return 0; }}
通常有几个步骤,
· 实现 Parcelable接口
· 实现 writeToParcel 方法
· 创建 CREATEOR,并实现 createFromParcel 和 newArray
区别
好了,说完这两个接口,来总结下这两个接口的区别
· Serializable 是Java提供的接口,本身序列化效率比 Android 的 Parcelable低
· 一般对于内存读写要求高的情况下用 Parcelable,程序间的数据传输也可以用 Parcelable
· Serializable更适合在文件存储的场景。因为 Parcelable可能会在不同Android版本间存在兼容问题,因此对于数据持久化存储的场景不建议用Parcelable