移動開(kāi)發:序列化(huà)與反序列® ∏™化(huà)Parcelable和(hé)Serializabε₹le淺析

發布來(lái)源:武漢瑞傑時代網絡科技有限公司

發布時(shí)間(jiān):2024.12.03

  在日(rì)常的(de)應用(yòng)↑©開(kāi)發中,我們可(kě)能(nén ✘εg)需要(yào)讓某些(xiē)對(d"↓uì)象離(lí)開(kāi)內(nèi)存‍€空(kōng)間(jiān),存儲到(dào)物(wù)理(lǐ)←'≥φ磁盤,以便長(cháng)期保存,同時(shí)也(✘λγ♣yě)能(néng)減少(shǎo)對(duì)內(nèi)存的(de)壓₩γ€力,而在需要(yào)時(shí)再将其從(cóng£&λ₹)磁盤讀(dú)取到(dào)內(nèi)存,比如(rú)将某個(gè)特&‌定的(de)對(duì)象保存到(dào)文(wén↕↕®)件(jiàn)中,隔一(yī)段時(shí)間(j∑&iān)後再把它讀(dú)取到(dào)內(nèi)存中∏±使用(yòng),那(nà)麽該對(duì)象就(•σ≤jiù)需要(yào)實現(xiàn)序列化(huà)操作(zuò),在Ja÷✘€€va中可(kě)以使用(yòng)Serializable接口實現(xi☆$✔àn)對(duì)象的(de)序列化(huà),而在androδ≥∞>id中既可(kě)以使用(yòng)Serializ©↑able接口實現(xiàn)對(duì)象序列化(huà)也(y♦₩‌ ě)可(kě)以使用(yòng)Parcelable接口實現(xià'→n)對(duì)象序列化(huà),但(dàn)是(shì)在內¥₩§(nèi)存操作(zuò)時(shí)更傾向于實現(xiàn)Parce&£✔lable接口,這(zhè)樣會(huì)使用(yòng)γ↕₽傳輸效率更高(gāo)效。接下(xià)來(lái)我們将分(fē"✘ n)别詳細地(dì)介紹這(zhè)樣兩種β✘‌>序列化(huà)操作(zuò)。

  了(le)解序列化(huà)與反序列

  序列化(huà)

  由于存在于內(nèi)存中的(de)對(¥φduì)象都(dōu)是(shì)暫時(shí)的(de),無法長(<₩cháng)期駐存,為(wèi)了(le)把對(duìβ→€)象的(de)狀态保持下(xià)來(lái),這(zhè)時(shí)§ 需要(yào)把對(duì)象寫入到(dà♥←o)磁盤或者其他(tā)介質中,這(zhè)個(gè)過程就(jiù)叫做£φ∑↑(zuò)序列化(huà)。

  反序列化(huà)

  反序列化(huà)恰恰是(shì)序列¥☆化(huà)的(de)反向操作(zuò),也(yě)就(jiù)是(shì)說σ§(shuō),把已存在在磁盤或者其他(tā)介質中的(de)對₽₩(duì)象,反序列化(huà)(讀(dú)取)到↔¶→β(dào)內(nèi)存中,以便後續操作(zγ'♠uò),而這(zhè)個(gè)過程就(jiù±​£)叫做(zuò)反序列化(huà)。
  概括性來(lái)說(shuō)序列→•化(huà)是(shì)指将對(duì)象實例的(de)狀态存儲到(dào)‍£存儲媒體(tǐ)(磁盤或者其他(tā)介質)的(de)過程。在此過→₩&程中,先将對(duì)象的(de)公共字段和(hé)私有(yǒu)✘∑字段以及類的(de)名稱(包括類所在的(de)程序集<  φ)轉換為(wèi)字節流,然後再把字節流寫入數(shù)據流β<¶。在随後對(duì)對(duì)象進行(xín≥♥÷g)反序列化(huà)時(shí),将創建出與★π 原對(duì)象完全相(xiàng)同的(de)副本。₹π☆£

  實現(xiàn)序列化(huà)的(de)必要(yào)條件γ₽(jiàn)

  一(yī)個(gè)對(duì)象要(yào)™₩€ε實現(xiàn)序列化(huà)操作(zuò),該類就(jiù)必須實現©Ω(xiàn)了(le)Serializable接™•口或者Parcelable接口,其中Seriali↑♠Ω®zable接口是(shì)在java中的(de£♠)序列化(huà)抽象類,而Parcelab₩‌≠le接口則是(shì)android中特♦→有(yǒu)的(de)序列化(huà)接口,在某些÷₽∏™(xiē)情況下(xià),Parcelable接口實←α£¶現(xiàn)的(de)序列化(huà)更為(wèi)高(→↑gāo)效,關于它們的(de)實現(xiàn)案例我們後續會(¶✘‌γhuì)分(fēn)析,這(zhè)裡(lǐ)隻•​↕要(yào)清楚知(zhī)道(dào)實現(xiànπ©→)序列化(huà)操作(zuò)時(shí)必須Ω‌σ實現(xiàn)Serializable接口或者Parσ÷celable接口之一(yī)即可(kě)。

  序列化(huà)的(de)應用(yòng)情景

  主要(yào)有(yǒu)以下(xià)情況(但(λ↑₹λdàn)不(bù)限于以下(xià)情況)

  1)內(nèi)存中的(de)對(duì)象寫入到(dào)硬盤;
  2)用(yòng)套接字在網絡上(shà®$ng)傳送對(duì)象;
  3)通(tōng)過RMI(RemoteMethodInvok €±♦e遠(yuǎn)程方法調用(yòng))傳輸對(←δ♠✔duì)象;

  Serializable

  Serializable是(shì)java提供的(de)一(yī)φ¥個(gè)序列化(huà)接口,它是(shì)一(yī)•φ∏₹個(gè)空(kōng)接口,專門(mén)為(wèi)對(du←Ωì)象提供标準的(de)序列化(huà)和(hé)反序列化(huà)操作(≥®‌$zuò),使用(yòng)Serializable實現(xiàn§β₹≠)類的(de)序列化(huà)比較簡單,隻要ε Ωε(yào)在類聲明(míng)中實現(xiàn)Serializable接口即Ωδ‌可(kě),同時(shí)強烈建議(yì)聲明(míng)序列化(h₩£φ‍uà)标識。

  Parcelable

  鑒于Serializable在內(nèi₹★↓)存序列化(huà)上(shàng)開(kāi)∑©αφ銷比較大(dà),而內(nèi)存資源屬♣♠于android系統中的(de)稀有(yǒu)資源(android系統"¥≥分(fēn)配給每個(gè)應用(yòng)的(de)內(nèi)存開(k§♦āi)銷都(dōu)是(shì)有(yǒu)λ₽★♠限的(de)),為(wèi)此android中提供了(le)Parce‌♦ 'lable接口來(lái)實現(xiàn)序列化(huà)操作(zu™<< ò),Parcelable的(de)性能(néng)比Serializab&δ•λle好(hǎo),在內(nèi)存開(kāi)銷方面較小(xiǎo),♠λ♠所以在內(nèi)存間(jiān)數(shù)據傳輸π​₩ε時(shí)推薦使用(yòng)Parcelable,如(rú)通(tōng)₽↔§過Intent在activity間(jiān)傳輸數(shù)據,而Parcβ™elable的(de)缺點就(jiù)使用(yòng)起來(lái)"∑♠€比較麻煩。
TAG:
相(xiàng)關資訊
多(duō)一(yī)份參考,總有(yǒu)×☆ε益處
聯系三好(hǎo)網絡,免費(fèi)獲得(de)專屬定制(zh™§ì)《策劃方案》及網站(zhàn)建設、網站(zhàn)設計(jì)、網站(☆♠zhàn)制(zhì)作(zuò)報(bào)價
網站(zhàn)建設

咨詢相(xiàng)關問(wèn)題或預約面談•←✔₩,可(kě)以通(tōng)過以下(xià)方式與σφ我們聯系

業(yè)務熱(rè)線13387655359大(dà)客戶專線13543255359

提交需求提交需求

提交需求
熱(rè)線
微(wēi)信掃碼咨詢
電(diàn)話(huà)咨詢
微(wēi)信
業(yè)務熱(rè)線
提交需求
官方微(wēi)信
準備好(hǎo)開(kāi)始了(le)嗎(‍∞∑§ma),
那(nà)就(jiù)與我們取得(de)聯系₩§★吧(ba)
13387655359
有(yǒu)更多(duō)服務咨詢,請(qǐng)聯系我δ€∑δ們
請(qǐng)填寫您的(de)需求
您希望我們為(wèi)您提供什(shén)麽服務÷↑‌呢(ne)
您的(de)預算(suàn)