序列化就是可以把對象存儲在本地文件,把數(shù)據(jù)可以在網(wǎng)絡(luò)中傳輸,也可以在IPC機(jī)制中傳遞。android中可以使用二種序列化,實現(xiàn)Serializable和實現(xiàn)Parcelable接口狞玛。
Serializable是JAVA中提供的系列化接口,在需要實現(xiàn)的類中實現(xiàn)接口涧窒,實現(xiàn)它后自動會做序列化操作心肪。這種方式的缺點是
使用的反射序列化過程比較慢,在序列化過程會創(chuàng)建很多臨時變量纠吴,容易觸發(fā)GC蒙畴。
Parcelable 速度快是android自己提供的序列化接口。據(jù) google 工程師的說法呜象,這些代碼將會運行地特別快膳凝。原因之一就是我們已經(jīng)清楚地知道了序列化的過程,而不需要使用反射來推斷恭陡。同時為了更快地進(jìn)行序列化蹬音,對象的代碼也需要高度優(yōu)化
接口的使用
public interface Parcelable {
//內(nèi)容描述接口,基本不用管
public int describeContents();
//寫入接口函數(shù)休玩,打包
public void writeToParcel(Parcel dest, int flags);
//讀取接口著淆,目的是要從Parcel中構(gòu)造一個實現(xiàn)了Parcelable的類的實例處理。因為實現(xiàn)類在這里還是不可知的拴疤,所以需要用到模板的方式永部,繼承類名通過模板參數(shù)傳入。
//為了能夠?qū)崿F(xiàn)模板參數(shù)的傳入呐矾,這里定義Creator嵌入接口,內(nèi)含兩個接口函數(shù)分別返回單個和多個繼承類實例苔埋。
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
總結(jié)
盡量用Parcelable ,因為這將會為你對象的序列化過程快10多倍蜒犯,而且占用較少的資源组橄。如果要將對象存儲本地就要用serialization,因為盡量用Parcelable是為了數(shù)據(jù)傳遞而設(shè)計的。但是大多數(shù)情況下罚随,Serializable的龜速不會太引人注目玉工。你想偷點懶就用它吧,不過要記得serialization是一個比較耗資源的操作淘菩,盡量少使用遵班。