三分鐘弄懂Android&Parcelable&序列化

為什么要序列化

  • 1.實現(xiàn)Parcelable就是為了進行序列化,那么蓉坎,為什么要序列化澳眷?
    1)永久性保存對象,保存對象的字節(jié)序列到本地文件中袍嬉;
    2)通過序列化對象在網(wǎng)絡(luò)中傳遞對象境蔼;
    3)通過序列化在進程間傳遞對象。

  • 2.實現(xiàn)序列化的方法
    Android中實現(xiàn)序列化有兩個選擇:一是實現(xiàn)Serializable接口(是JavaSE本身就支持的)伺通,一是實現(xiàn)Parcelable接口(是Android特有功能箍土,效率比實現(xiàn)Serializable接口高效,可用于Intent數(shù)據(jù)傳遞罐监,也可以用于進程間通信(IPC))吴藻。實現(xiàn)Serializable接口非常簡單,聲明一下就可以了弓柱。
    ** 實現(xiàn)Parcelable接口稍微復(fù)雜一些沟堡,但效率更高。(推薦這種)**

  • 3.Parcelable接口定義

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); }
}
  • 4.實現(xiàn)Parcelable步驟
    1)implements Parcelable
    2)重寫writeToParcel方法缭嫡,將你的對象序列化為一個Parcel對象缔御,即:將類的數(shù)據(jù)寫入外部提供的Parcel中,打包需要傳遞的數(shù)據(jù)到Parcel容器保存妇蛀,以便從 Parcel容器獲取數(shù)據(jù)
    3)重寫describeContents方法耕突,內(nèi)容接口描述,默認(rèn)返回0就可以
    4)實例化靜態(tài)內(nèi)部對象CREATOR實現(xiàn)接口Parcelable.Creator

總結(jié):

通過writeToParcel將你的對象映射成Parcel對象讥耗,再通過createFromParcel將Parcel對象映射成你的對象有勾。也可以將Parcel看成是一個流,通過writeToParcel把對象寫到流里面古程,在通過createFromParcel從流里讀取對象蔼卡,只不過這個過程需要你來實現(xiàn),因此寫的順序和讀的順序必須一致。

示例代碼如下

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

End

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雇逞,一起剝皮案震驚了整個濱河市荤懂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌塘砸,老刑警劉巖节仿,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掉蔬,居然都是意外死亡廊宪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門女轿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箭启,“玉大人,你說我怎么就攤上這事蛉迹「倒眩” “怎么了?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵北救,是天一觀的道長荐操。 經(jīng)常有香客問我,道長珍策,這世上最難降的妖魔是什么托启? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮攘宙,結(jié)果婚禮上驾中,老公的妹妹穿的比我還像新娘。我一直安慰自己模聋,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布唠亚。 她就那樣靜靜地躺著链方,像睡著了一般。 火紅的嫁衣襯著肌膚如雪灶搜。 梳的紋絲不亂的頭發(fā)上祟蚀,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天,我揣著相機與錄音割卖,去河邊找鬼前酿。 笑死,一個胖子當(dāng)著我的面吹牛鹏溯,可吹牛的內(nèi)容都是我干的罢维。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼丙挽,長吁一口氣:“原來是場噩夢啊……” “哼肺孵!你這毒婦竟也來了匀借?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤平窘,失蹤者是張志新(化名)和其女友劉穎吓肋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑰艘,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡是鬼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了紫新。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片均蜜。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖弊琴,靈堂內(nèi)的尸體忽然破棺而出兆龙,到底是詐尸還是另有隱情,我是刑警寧澤敲董,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布紫皇,位于F島的核電站,受9級特大地震影響腋寨,放射性物質(zhì)發(fā)生泄漏聪铺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一萄窜、第九天 我趴在偏房一處隱蔽的房頂上張望铃剔。 院中可真熱鬧,春花似錦查刻、人聲如沸键兜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽普气。三九已至,卻和暖如春佃延,著一層夾襖步出監(jiān)牢的瞬間现诀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工履肃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留仔沿,地道東北人。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓尺棋,卻偏偏與公主長得像封锉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,995評論 2 361

推薦閱讀更多精彩內(nèi)容