序列化serializable和parcelable區(qū)別

序列化铁坎,表示將一個對象轉(zhuǎn)換成可存儲或可傳輸?shù)臓顟B(tài)碳抄。序列化后的對象可以在網(wǎng)絡(luò)上進行傳輸,也可以存儲到本地舌稀。

1.優(yōu)劣

Serializable的作用是為了保存對象的屬性到本地文件啊犬、數(shù)據(jù)庫、網(wǎng)絡(luò)流壁查、rmi以方便數(shù)據(jù)傳輸觉至,當然這種傳輸可以是程序內(nèi)的也可以是兩個程序間的

Serializable在序列化的時候會產(chǎn)生大量的臨時變量睡腿,從而引起頻繁的GC语御。使用了反射,序列化的過程較慢

serializable的迷人之處在于你只需要對某個類以及它的屬性實現(xiàn)Serializable 接口即可席怪。Serializable 接口是一種標識接口(marker interface)沃暗,這意味著無需實現(xiàn)方法,Java便會對這個對象進行高效的序列化操作何恶。


Parcelable的設(shè)計初衷是因為Serializable效率過慢孽锥,為了在程序內(nèi)不同組件間以及不同Android程序間(AIDL)高效的傳輸數(shù)據(jù)而設(shè)計,這些數(shù)據(jù)僅在內(nèi)存中存在细层,Parcelable是通過IBinder通信的消息的載體惜辑。

Parcelable不能使用在要將數(shù)據(jù)存儲在磁盤上的情況,因為Parcelable在外界有變化的情況下盛撑,不能很好的保證數(shù)據(jù)的持續(xù)性。盡管Serializable效率低點,但此時還是建議使用Serializable 。

Parcelable方式的實現(xiàn)原理是將一個完整的對象進行分解婚瓜,而分解后的每一部分都是Intent所支持的數(shù)據(jù)類型,這樣也就實現(xiàn)傳遞對象的功能了

Parcelable的持久化存儲是不穩(wěn)定的胡陪,它會隨著系統(tǒng)版本的不同而變化


2.使用

對于Serializable,類只需要實現(xiàn)Serializable接口,并提供一個序列化版本id(serialVersionUID)即可


Parcelable則需要實現(xiàn)writeToParcel、describeContents函數(shù)以及靜態(tài)的CREATOR變量,實際上就是將如何打包和解包的工作自己來定義,而序列化的這些操作完全由底層實現(xiàn)

例如:

public class NewAddrIndia implements Parcelable {

//tag = 1

@SerializedName("addr")

publicStringaddr;

//tag = 2

@SerializedName("landmark")

publicStringlandmark;

//tag = 3

@SerializedName("city")

publicStringcity;

public static NewAddrIndia decode(byte[] bytes) throws IOException {

BufferedSource source =newBuffer().write(bytes);

ProtoReader reader =newProtoReader(source);

returndecode(reader);

}

public static NewAddrIndia decode(ProtoReader reader)throwsIOException {

NewAddrIndia result =newNewAddrIndia();

longtoken = reader.beginMessage();

for(inttag; (tag = reader.nextTag()) != -1; ) {

switch(tag) {

case1:

result.addr= ProtoAdapter.STRING.decode(reader);

break;

case2:

result.landmark= ProtoAdapter.STRING.decode(reader);

break;

case3:

result.city= ProtoAdapter.STRING.decode(reader);

break;

default:

reader.peekFieldEncoding().rawProtoAdapter().decode(reader);

break;

}

}

reader.endMessage(token);

returnresult;

}

@Override

public intdescribeContents() {

return0;

}

@Override

public void writeToParcel(Parcel dest,intflags) {

dest.writeString(this.addr);

dest.writeString(this.landmark);

dest.writeString(this.city);

}

public NewAddrIndia() {

}

protected NewAddrIndia(Parcel in) {

this.addr= in.readString();

this.landmark= in.readString();

this.city= in.readString();

}

public static final CreatorCREATOR=newCreator() {

@Override

public NewAddrIndia createFromParcel(Parcel source) {

return newNewAddrIndia(source);

}

@Override

public NewAddrIndia[] newArray(intsize) {

return newNewAddrIndia[size];

}

};

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌香嗓,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件装畅,死亡現(xiàn)場離奇詭異靠娱,居然都是意外死亡,警方通過查閱死者的電腦和手機掠兄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門像云,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蚂夕,你說我怎么就攤上這事迅诬。” “怎么了婿牍?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵侈贷,是天一觀的道長。 經(jīng)常有香客問我等脂,道長俏蛮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任上遥,我火速辦了婚禮搏屑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粉楚。我一直安慰自己辣恋,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布模软。 她就那樣靜靜地躺著伟骨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撵摆。 梳的紋絲不亂的頭發(fā)上底靠,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音特铝,去河邊找鬼暑中。 笑死,一個胖子當著我的面吹牛鲫剿,可吹牛的內(nèi)容都是我干的鳄逾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼灵莲,長吁一口氣:“原來是場噩夢啊……” “哼雕凹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤枚抵,失蹤者是張志新(化名)和其女友劉穎线欲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汽摹,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡李丰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了逼泣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趴泌。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拉庶,靈堂內(nèi)的尸體忽然破棺而出嗜憔,到底是詐尸還是另有隱情,我是刑警寧澤氏仗,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布吉捶,位于F島的核電站,受9級特大地震影響廓鞠,放射性物質(zhì)發(fā)生泄漏帚稠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一床佳、第九天 我趴在偏房一處隱蔽的房頂上張望滋早。 院中可真熱鬧,春花似錦砌们、人聲如沸杆麸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昔头。三九已至,卻和暖如春影兽,著一層夾襖步出監(jiān)牢的瞬間揭斧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工峻堰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留讹开,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓捐名,卻偏偏與公主長得像旦万,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子镶蹋,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

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