標籤:des android style blog http os 使用 ar java
轉自:http://www.blogjava.net/lincode/archive/2011/09/16/358805.html
android 中自訂的對象序列化的問題有兩個選擇一個是Parcelable,另外一個是Serializable。
一 序列化原因:
1.永久性儲存對象,儲存對象的位元組序列到本地檔案中;
2.通過序列化對象在網路中傳遞對象;
3.通過序列化在進程間傳遞對象。
二 至於選取哪種可參考下面的原則:
1.在使用記憶體的時候,Parcelable 類比Serializable效能高,所以推薦使用Parcelable類。
2.Serializable在序列化的時候會產生大量的臨時變數,從而引起頻繁的GC。
3.Parcelable不能使用在要將資料存放區在磁碟上的情況,因為Parcelable不能很好的保證資料的持久性在外界有變化的情況下。儘管Serializable效率低點, 也不提倡用,但在這種情況下,還是建議你用Serializable 。
實現:
1 Serializable 的實現,只需要繼承 implements Serializable 即可。這隻是給對象打了一個標記,系統會自動將其序列化。
2 Parcelabel 的實現,需要在類中添加一個靜態成員變數 CREATOR,這個變數需要繼承 Parcelable.Creator 介面。
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
[android] Serializable 和 Parcelable 區別