很详细的android序列化过程Parcelable
作者:夏操
这篇文章主要为大家详细介绍了很详细的android序列化过程Parcelable,代码注释很详细,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了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()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。