android序列化 很详细的android序列化过程Parcelable
夏操 人气:0想了解很详细的android序列化过程Parcelable的相关内容吗,夏操在本文为您仔细讲解android序列化的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点: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()); } }
加载全部内容