你的位置:首页 > 操作系统

[操作系统]android 很详细的序列化过程Parcelable


直接上代码:注释都写的很清楚了。

public class Entry implements Parcelable{
public int userID;
public String username;
public boolean isMale;
public Book book;//序列化对象可以嵌套序列化对象,前提是2个类的对象都被序列号过
//几乎所有情况下都返回0,可以不管
@Override
public int describeContents() {
return 0;
}
//序列化对象,将对象写到序列号数据结构中
//flags:大多数情况为0
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(userID);
out.writeString(username);
out.writeInt(isMale ? 1:0);
out.writeParcelable(book, 0);
// out.writeList(list);也可以序列号list和Map,前提是list和Map里面的数据都是可序列号的
// out.writeMap(Map);
}
public Entry(int userID,String username,boolean isMale) {
this.userID = userID;
this.username = username;
this.isMale = isMale;
}
//反序列化
public static final Parcelable.Creator<Entry> CREATOR = new Creator<Entry>() {
//创建指定长度的原始对象数组
@Override
public Entry[] newArray(int size) {
// TODO Auto-generated method stub
return new Entry[size];
}
//从序列号过后的对象中创建原始对象
@Override
public Entry createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new Entry(source);
}
};
//从序列号后的对象中创建原始对象
private Entry(Parcel in){
userID = in.readInt();
username = in.readString();
isMale = in.readInt() == 1;
in.readParcelable(Thread.currentThread().getContextClassLoader());
}

}