Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> android 很詳細的序列化過程Parcelable,androidparcelable

android 很詳細的序列化過程Parcelable,androidparcelable

編輯:關於android開發

android 很詳細的序列化過程Parcelable,androidparcelable


直接上代碼:注釋都寫的很清楚了。

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());
}

}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved