Android序列化对象主要有两种方法,实现Serializable接口、或者实现Parcelable接口。实现Serializable接口就不说了,直接实现Serializable就可以了,Parcelable是Android特有的,效率更高。推荐用这种方法提高性能。实现Parcelable接口序列化对象的步骤如下:
1、声明接口Parcelable
2、实现Parcelable的方法writeToParcel,将你的对象序列化为一个Parcel对象
1、声明接口Parcelable
2、实现Parcelable的方法writeToParcel,将你的对象序列化为一个Parcel对象
3、实例化静态内部对象CREATOR实现接口Parcelable.Creator:
public static final Parcelable.Creator<T> CREATOR
4、完成CREATOR的代码,实现方法createFromParcel,将Parcel对象反序列化为你的对象
通过writeToParcel将对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成需要的对象。也可以将Parcel看成是一个流,通过writeToParcel把对象写出,在通过createFromParcel读取对象,这里需要注意,写的顺序和读的顺序必须一致,否则会抛出异常。Parcel对象可以通过以下方法写入或读取byte, double, float, int, long, String这6种类型变量。
writeByte(byte), readByte()
writeDouble(double), readDouble()
writeFloat(float), readFloat()
writeInt(int), readInt()
writeLong(long), readLong()
writeString(String), readString()
writeBooleanArray(boolean[]), readBooleanArray(boolean[]), createBooleanArray() writeByteArray(byte[]), writeByteArray(byte[], int, int), readByteArray(byte[]), createByteArray() writeCharArray(char[]), readCharArray(char[]), createCharArray() writeDoubleArray(double[]), readDoubleArray(double[]), createDoubleArray() writeFloatArray(float[]), readFloatArray(float[]), createFloatArray() writeIntArray(int[]), readIntArray(int[]), createIntArray() writeLongArray(long[]), readLongArray(long[]), createLongArray() writeStringArray(String[]), readStringArray(String[]), createStringArray() writeSparseBooleanArray(SparseBooleanArray), readSparseBooleanArray()