中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

移動開發(fā):序列化與反序列化Parcelable和Serializable淺析

2022-07-21    分類: 網(wǎng)站建設

在日常的應用開發(fā)中,我們可能需要讓某些對象離開內(nèi)存空間,存儲到物理磁盤,以便長期保存,同時也能減少對內(nèi)存的壓力,而在需要時再將其從磁盤讀取到內(nèi)存,比如將某個特定的對象保存到文件中,隔一段時間后再把它讀取到內(nèi)存中使用,那么該對象就需要實現(xiàn)序列化操作,在Java中可以使用Serializable接口實現(xiàn)對象的序列化,而在android中既可以使用Serializable接口實現(xiàn)對象序列化也可以使用parcelable接口實現(xiàn)對象序列化,但是在內(nèi)存操作時更傾向于實現(xiàn)parcelable接口,這樣會使用傳輸效率更高效。接下來我們將分別詳細地介紹這樣兩種序列化操作。

了解序列化與反序列

序列化

由于存在于內(nèi)存中的對象都是暫時的,無法長期駐存,為了把對象的狀態(tài)保持下來,這時需要把對象寫入到磁盤或者其他介質(zhì)中,這個過程就叫做序列化。

反序列化

反序列化恰恰是序列化的反向操作,也就是說,把已存在在磁盤或者其他介質(zhì)中的對象,反序列化(讀?。┑絻?nèi)存中,以便后續(xù)操作,而這個過程就叫做反序列化。

概括性來說序列化是指將對象實例的狀態(tài)存儲到存儲媒體(磁盤或者其他介質(zhì))的過程。在此過程中,先將對象的公共字段和私有字段以及類的名稱(包括類所在的程序集)轉(zhuǎn)換為字節(jié)流,然后再把字節(jié)流寫入數(shù)據(jù)流。在隨后對對象進行反序列化時,將創(chuàng)建出與原對象完全相同的副本。

實現(xiàn)序列化的必要條件

一個對象要實現(xiàn)序列化操作,該類就必須實現(xiàn)了Serializable接口或者parcelable接口,其中Serializable接口是在java中的序列化抽象類,而parcelable接口則是android中特有的序列化接口,在某些情況下,parcelable接口實現(xiàn)的序列化更為高效,關于它們的實現(xiàn)案例我們后續(xù)會分析,這里只要清楚知道實現(xiàn)序列化操作時必須實現(xiàn)Serializable接口或者parcelable接口之一即可。

序列化的應用情景

主要有以下情況(但不限于以下情況)

1)內(nèi)存中的對象寫入到硬盤;

2)用套接字在網(wǎng)絡上傳送對象;

3)通過RMI(RemoteMethodInvoke遠程方法調(diào)用)傳輸對象;

Serializable

Serializable是java提供的一個序列化接口,它是一個空接口,專門為對象提供標準的序列化和反序列化操作,使用Serializable實現(xiàn)類的序列化比較簡單,只要在類聲明中實現(xiàn)Serializable接口即可,同時強烈建議聲明序列化標識。

parcelable

鑒于Serializable在內(nèi)存序列化上開銷比較大,而內(nèi)存資源屬于android系統(tǒng)中的稀有資源(android系統(tǒng)分配給每個應用的內(nèi)存開銷都是有限的),為此android中提供了parcelable接口來實現(xiàn)序列化操作,parcelable的性能比Serializable好,在內(nèi)存開銷方面較小,所以在內(nèi)存間數(shù)據(jù)傳輸時推薦使用parcelable,如通過Intent在activity間傳輸數(shù)據(jù),而parcelable的缺點就使用起來比較麻煩。

文章題目:移動開發(fā):序列化與反序列化Parcelable和Serializable淺析
標題鏈接:http://www.rwnh.cn/news/181335.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、做網(wǎng)站、網(wǎng)站導航響應式網(wǎng)站、自適應網(wǎng)站、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計
蓬安县| 麦盖提县| 长沙县| 宜兴市| 西贡区| 衡阳市| 广德县| 昭苏县| 金堂县| 万盛区| 达州市| 永康市| 海宁市| 安图县| 进贤县| 桐乡市| 铜陵市| 海城市| 蚌埠市| 大冶市| 甘孜| 尼勒克县| 汉源县| 洛阳市| 闸北区| 鄂伦春自治旗| 梓潼县| 怀安县| 金山区| 繁昌县| 辽阳市| 石阡县| 洪雅县| 白沙| 防城港市| 宝丰县| 噶尔县| 塔河县| 顺平县| 平泉县| 镇坪县|