序列化就是可以把對象存儲在本地文件,把數據可以在網絡中傳輸,也可以在IPC機制中傳遞。android中可以使用二種序列化,實現Serializable和實現Parcelable接口。
Serializable是JAVA中提供的系列化接口,在需要實現的類中實現接口,實現它后自動會做序列化操作。這種方式的缺點是
使用的反射序列化過程比較慢,在序列化過程會創建很多臨時變量,容易觸發GC。
Parcelable 速度快是android自己提供的序列化接口。據 google 工程師的說法,這些代碼將會運行地特別快。原因之一就是我們已經清楚地知道了序列化的過程,而不需要使用反射來推斷。同時為了更快地進行序列化,對象的代碼也需要高度優化
接口的使用
public interface Parcelable {
//內容描述接口,基本不用管
public int describeContents();
//寫入接口函數,打包
public void writeToParcel(Parcel dest, int flags);
//讀取接口,目的是要從Parcel中構造一個實現了Parcelable的類的實例處理。因為實現類在這里還是不可知的,所以需要用到模板的方式,繼承類名通過模板參數傳入。
//為了能夠實現模板參數的傳入,這里定義Creator嵌入接口,內含兩個接口函數分別返回單個和多個繼承類實例。
public interface Creator<T> {
public T createFromParcel(Parcel source);
public T[] newArray(int size);
}
http://www.cnblogs.com/hpboy/archive/2012/07/12/2587797.html
總結
盡量用Parcelable ,因為這將會為你對象的序列化過程快10多倍,而且占用較少的資源。如果要將對象存儲本地就要用serialization,因為盡量用Parcelable是為了數據傳遞而設計的。但是大多數情況下,Serializable的龜速不會太引人注目。你想偷點懶就用它吧,不過要記得serialization是一個比較耗資源的操作,盡量少使用。