關(guān)于序列化的知識(shí)

1、Parcelable和Serializable有什么用罐寨,它們有什么差別料身?

作用:
Serializable是Java所提供的一個(gè)序列化接口,它是一個(gè)空接口衩茸,為對(duì)象提供標(biāo)準(zhǔn)的序列化和反序列化操作芹血。它的作用是為了保存對(duì)象的屬性到本地文件、數(shù)據(jù)庫(kù)楞慈、網(wǎng)絡(luò)流幔烛、rmi以方便數(shù)據(jù)傳輸,當(dāng)然這種傳輸可以是程序內(nèi)的也可以是兩個(gè)程序間的囊蓝。
而Android的Parcelable的設(shè)計(jì)初衷是因?yàn)镾erializable效率過(guò)慢饿悬,為了在程序內(nèi)不同組件間以及不同Android程序間(AIDL)高效的傳輸數(shù)據(jù)而設(shè)計(jì),這些數(shù)據(jù)僅在內(nèi)存中存在聚霜,Parcelable是通過(guò)IBinder通信的消息的載體狡恬。

區(qū)別
1)在使用內(nèi)存的時(shí)候,Parcelable比Serializable性能高蝎宇,所以推薦使用Parcelable弟劲。
2)Serializable在序列化的時(shí)候會(huì)產(chǎn)生大量的臨時(shí)變量,從而引起頻繁的GC姥芥。
3)Parcelable不能使用在要將數(shù)據(jù)存儲(chǔ)在磁盤上的情況兔乞,因?yàn)镻arcelable不能很好的保證數(shù)據(jù)的持續(xù)性在外界有變化的情況下。盡管Serializable效率低點(diǎn),但此時(shí)還是建議使用Serializable 庸追。

2霍骄、自定義一個(gè)類讓其實(shí)現(xiàn)Parcelable,大致流程是什么?

例如自定義實(shí)體類PersonBean 淡溯,實(shí)現(xiàn)Parcelable接口
1).復(fù)寫writeToParcel 將對(duì)象數(shù)據(jù)序列化成一個(gè)Parcel對(duì)象(序列化之后成為Parcel對(duì)象.以便Parcel容器取出數(shù)據(jù)读整,其中flags標(biāo)識(shí)有兩種值:0或1。為1時(shí)標(biāo)識(shí)當(dāng)前對(duì)象需要作為返回值返回咱娶,不能立刻釋放資源绘沉,即PARCELABLE_WRITE_RETURN_VALUE,不過(guò)幾乎所有情況都返回0)豺总;
2).復(fù)寫describeContents方法,默認(rèn)值為0(返回當(dāng)前對(duì)象的內(nèi)存描述车伞。如果含有文件描述符,返回1 即CONTENTS_FILE_DESCRIPTOR喻喳,否則返回0另玖,幾乎所有情況都返回0);
3).實(shí)例化靜態(tài)內(nèi)部對(duì)象CREATOR表伦,實(shí)現(xiàn)接口Parcelable.Creator 谦去。

示例:

public class PersonBean implements Parcelable {
    private String name;
    private String age;

    //從序列化后的對(duì)象中創(chuàng)建原始對(duì)象
    protected PersonBean(Parcel in) {
        name = in.readString();
        age = in.readString();
    }


    //將Parcel容器中的數(shù)據(jù)轉(zhuǎn)換成對(duì)象數(shù)據(jù)
    public static final Creator<PersonBean> CREATOR = new Creator<PersonBean>() {
       //從序列化后的對(duì)象中創(chuàng)建原始對(duì)象
       //從Parcel容器中取出數(shù)據(jù)并進(jìn)行轉(zhuǎn)換
        @Override
        public PersonBean createFromParcel(Parcel in) {
            return new PersonBean(in);
        }

        //創(chuàng)建指定長(zhǎng)度的原始對(duì)象數(shù)組
        //返回對(duì)象數(shù)據(jù)的大小
        @Override
        public PersonBean[] newArray(int size) {
            return new PersonBean[size];
        }
    };

    //返回當(dāng)前對(duì)象的內(nèi)存描述。如果含有文件描述符蹦哼,返回1 即CONTENTS_FILE_DESCRIPTOR鳄哭,
    //否則返回0
    //幾乎所有情況都返回0
    @Override
    public int describeContents() {
        return 0;
    }

    //將當(dāng)前對(duì)象寫入序列化結(jié)構(gòu)中,其中flags標(biāo)識(shí)有兩種值:0或1
    //為1時(shí)標(biāo)識(shí)當(dāng)前對(duì)象需要作為返回值返回纲熏,不能立刻釋放資源妆丘,即PARCELABLE_WRITE_RETURN_VALUE
    //不過(guò)幾乎所有情況都返回0
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeString(age);

    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市局劲,隨后出現(xiàn)的幾起案子勺拣,更是在濱河造成了極大的恐慌,老刑警劉巖鱼填,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件药有,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡苹丸,警方通過(guò)查閱死者的電腦和手機(jī)愤惰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赘理,“玉大人宦言,你說(shuō)我怎么就攤上這事「泻叮” “怎么了蜡励?”我有些...
    開(kāi)封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵令花,是天一觀的道長(zhǎng)阻桅。 經(jīng)常有香客問(wèn)我凉倚,道長(zhǎng),這世上最難降的妖魔是什么嫂沉? 我笑而不...
    開(kāi)封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任稽寒,我火速辦了婚禮,結(jié)果婚禮上趟章,老公的妹妹穿的比我還像新娘杏糙。我一直安慰自己,他們只是感情好蚓土,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布宏侍。 她就那樣靜靜地躺著,像睡著了一般蜀漆。 火紅的嫁衣襯著肌膚如雪谅河。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天确丢,我揣著相機(jī)與錄音绷耍,去河邊找鬼。 笑死鲜侥,一個(gè)胖子當(dāng)著我的面吹牛褂始,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播描函,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼崎苗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了舀寓?” 一聲冷哼從身側(cè)響起益缠,我...
    開(kāi)封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎基公,沒(méi)想到半個(gè)月后幅慌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轰豆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年胰伍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酸休。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骂租,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斑司,到底是詐尸還是另有隱情渗饮,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站互站,受9級(jí)特大地震影響私蕾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胡桃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一踩叭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翠胰,春花似錦容贝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至锻狗,卻和暖如春满力,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屋谭。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工脚囊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桐磁。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓悔耘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親我擂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衬以,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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