Android序列化

Parcelable

Parcelable是android.os.Parcelable提供的Android平臺進行序列化的接口。在writeToParcel()通過底層Parcel中一些列write()方法完成序列化瞬项;在YourParcelable.CREATOR內(nèi)部如何創(chuàng)建序列化對象和數(shù)組撑教,通過Parcel中一些列read()方法完成反序列化穆趴;describeContents()完成內(nèi)容描述功能北秽。

使用Parcelable進行序列化流程

1. 繼承Parcelable接口;

2. 覆寫describeContents()呢铆、writeToParcel()方法(Implement methods)贷屎;

3. 添加Parcel形參的構(gòu)造函數(shù)罢防,公有靜態(tài)常量CREATOR(Add Parcelable Implementation)。

補充:Android Studio插件:Android Parcelable code generator插件唉侄。寫完實體類后在Generate界面(Alt + Insert鍵)選擇Parcelable一鍵生成咒吐。

Serializable

Serializable是Java提供的序列化借口,是一個空接口属划,依賴serialVersionUID將對象序列化到文件或其他中介恬叹,反序列化時如果類結(jié)構(gòu)及serialVersionUID匹配就反序列化出對象。采用ObjectOutputStream和ObjectInputStream進行同眯。

注意

1. 序列化前绽昼、后的對象內(nèi)容完全一樣,但不是同一個對象须蜗;

2. serialVersionUID不是必須指定的硅确。系統(tǒng)會計算當前對象的Hash值將它賦值給serialVersionUID;

3. 如果serialVersionUID不匹配明肮,反序列化時會crash如下異常:java.io.InvalidClassException菱农;

擴展

1. 靜態(tài)成員變量屬于類,不會參與序列化過程柿估;

2. 用transient關(guān)鍵字修飾的成員變量不參與序列化過程循未;

3. 可覆寫writeObject()、readObject()改變系統(tǒng)默認的系列化過程官份;

4. 可使用此類的子類Externalizable對序列化進行自定義控制只厘;

Parcelable和Serializable差別

1.Parcelable主要用于內(nèi)存序列化,當需要序列化到存儲設(shè)備或進行網(wǎng)絡(luò)傳輸會相對復(fù)雜更適用Serializable舅巷;

2. 默認的Serializable使用反射消耗性能,可通過自定義writeObject()和readObject()優(yōu)化性能河咽;

注意

1. 在Android平臺中Serializable在Parcel.writeValue()中將序列化到ByteArrayOutputStream內(nèi)存中钠右;

2.Serializable在writeObject()和readObject()中直接進行流的讀寫會繞開反射,提升性能忘蟹;

3.Serializable只是人們常用磁盤序列化飒房,它也支持其他中介進行搁凸。性能并不低。


參考文獻

詳細介紹Android中Parcelable的原理和使用方法

Android序列化完全解析(一)-Java Serializable? 一個系列的狠毯,5*推薦

對Java Serializable(序列化)的理解和總結(jié)

Externalizable和Serializable

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末护糖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嚼松,更是在濱河造成了極大的恐慌嫡良,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件献酗,死亡現(xiàn)場離奇詭異寝受,居然都是意外死亡,警方通過查閱死者的電腦和手機罕偎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門很澄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颜及,你說我怎么就攤上這事甩苛。” “怎么了俏站?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵浪藻,是天一觀的道長。 經(jīng)常有香客問我乾翔,道長爱葵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任反浓,我火速辦了婚禮萌丈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雷则。我一直安慰自己辆雾,他們只是感情好,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布月劈。 她就那樣靜靜地躺著度迂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪猜揪。 梳的紋絲不亂的頭發(fā)上惭墓,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機與錄音而姐,去河邊找鬼腊凶。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的钧萍。 我是一名探鬼主播褐缠,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼风瘦!你這毒婦竟也來了队魏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤万搔,失蹤者是張志新(化名)和其女友劉穎胡桨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蟹略,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡登失,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挖炬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揽浙。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖意敛,靈堂內(nèi)的尸體忽然破棺而出馅巷,到底是詐尸還是另有隱情,我是刑警寧澤草姻,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布钓猬,位于F島的核電站,受9級特大地震影響撩独,放射性物質(zhì)發(fā)生泄漏敞曹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一综膀、第九天 我趴在偏房一處隱蔽的房頂上張望澳迫。 院中可真熱鬧,春花似錦剧劝、人聲如沸橄登。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拢锹。三九已至,卻和暖如春萄喳,著一層夾襖步出監(jiān)牢的瞬間卒稳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工取胎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留展哭,地道東北人湃窍。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓闻蛀,卻偏偏與公主長得像匪傍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子觉痛,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

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