一、Parcelable的基本介绍
Parcelable是Android为我们提供的序列化接口。一个类只要实现了这个接口,这个类的对象就可以实现序列化。可用于IPC/Binder,Activity之间的对象的传递。
二、Parcelable的基本使用
1、创建一个类实现Parcelable接口
2、实现接口中的describeContents()和writeToParcel(Parcel dest, int flags)方法
3、在类的实现中必须包含一个非空的静态实现了Parcelable.Creator接口的CREATOR。
示例如下:
public class User implements Parcelable {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
//此处读的顺序要和 writeToParcel(Parcel dest, int flags)的写入顺序保持一致,否则会导致读取的数据出错
private User(Parcel in) {
name = in.readString();
age = in.readInt();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>() {
@Override
public User createFromParcel(Parcel source) {
return new User(source);
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
}
三、Parcelable中方法的介绍
1、describeContents()
返回当前对象的内容描述。返回值为0或者CONTENTS_FILE_DESCRIPTOR(即1),如果writeToParcel(Parcel dest, int flags)的输出包含文件描述符,则返回1,否则返回0,几乎所有的情况之下都是返回0.
2、writeToParcel (Parcel dest, int flags)
将当前的对象写入序列化结构中,dest表示需要写入序列化的对象。flags有两种值0和PARCELABLE_WRITE_RETURN_VALUE(即1),几乎所有的情况下都是0.
3、createFromParcel(Parcel source)
返回Parcelable类的新实例。同Parcel的readXXX()方法来完成反序列化的过程。
4、newArray(int size)
创建Parcelable类的新数组。其中每个条目都初始化为空。供外部类反序列化本类数组使用。
注意:如果在该类的内部包含有里一个可序列化的对象,则该对象的的反序列化过程需要传递当前线程的上下文类加载器。否则会返回