Android序列化接口Parcelable與Serializable接口對(duì)比
Parcelable
優(yōu)點(diǎn):
- google專門為安卓寫的序列化接口
- 性能好,內(nèi)存開銷小,效率高,寫起來復(fù)雜
缺點(diǎn):
- 各個(gè)機(jī)型可能有差異,Parcelable使用會(huì)產(chǎn)生差異
- 通訊組件之間(AIDL ,INTENT)的數(shù)據(jù)傳遞,可以使用Parcelable
- 寫入存儲(chǔ)設(shè)備推薦使用Serializable
public class MyParcelable implements Parcelable {
* private int mData;//參數(shù)
* public int describeContents() {//類描述,一般不管他
* return 0;
* }
* public void writeToParcel(Parcel out, int flags) {//序列化 :out寫入?yún)?shù),要注明參數(shù)類型 flag一般默認(rèn)是0,1代表對(duì)象需要返回,不回收
* out.writeInt(mData);
* }
* public static final Parcelable.Creator<MyParcelable> CREATOR//反序列化操作
* = new Parcelable.Creator<MyParcelable>() {
* public MyParcelable createFromParcel(Parcel in) {
* return new MyParcelable(in);
* }
* public MyParcelable[] newArray(int size) {
* return new MyParcelable[size];
* }
* };
* private MyParcelable(Parcel in) {
* mData = in.readInt();
* }
* }google官方也是很貼心呀,直接把怎么用放在源碼的注釋里了
Serializable
優(yōu)點(diǎn):
- java自帶的序列化接口
- Serializable是一個(gè)空接口,使用簡(jiǎn)單,是一個(gè)標(biāo)識(shí),會(huì)給類一個(gè)序列化UID
缺點(diǎn):
- 因?yàn)槭褂玫氖欠瓷?,使用性能差,?nèi)存開銷大
package java.io;
// Android-added: Notes about serialVersionUID, using serialization judiciously, JSON.
public interface Serializable {
}Serializable 是一個(gè)空接口,用來標(biāo)識(shí)當(dāng)前類可以被 ObjectOutputStream序列化,以及被ObjectInputStream反序列化
Parcelable與Serializable的性能比較
- 在內(nèi)存的使用中,Parcelable在性能方面要強(qiáng)于Serializable
- Serializable在序列化操作的時(shí)候會(huì)產(chǎn)生大量的臨時(shí)變量,(原因是使用了反射機(jī)制)從而導(dǎo)致GC的頻繁調(diào)用,因此在性能上會(huì)稍微遜色
- Parcelable是以Ibinder作為信息載體的,在內(nèi)存上的開銷比較小,因此在內(nèi)存之間進(jìn)行數(shù)據(jù)傳遞的時(shí)候,Android推薦使用Parcelable
- 在讀寫數(shù)據(jù)的時(shí)候,Parcelable是在內(nèi)存中直接進(jìn)行讀寫,而Serializable是通過使用IO流的形式將數(shù)據(jù)讀寫入在硬盤上
- 雖然Parcelable的性能要強(qiáng)于Serializable,但是仍然有特殊的情況需要使用Serializable,而不去使用Parcelable,因?yàn)镻arcelable無法將數(shù)據(jù)進(jìn)行持久化,因此在將數(shù)據(jù)保存在磁盤的時(shí)候,仍然需要使用后者,因?yàn)榍罢邿o法很好的將數(shù)據(jù)進(jìn)行持久化 (原因是在不同的Android版本當(dāng)中,Parcelable可能會(huì)不同,因此數(shù)據(jù)的持久化方面仍然是使用Serializable)
總結(jié):
- Java應(yīng)用程序中有Serializable來實(shí)現(xiàn)序列化操作
- Android中有Parcelable來實(shí)現(xiàn)序列化操作
- 在Android中除了對(duì)數(shù)據(jù)持久化的時(shí)候需要使用到Serializable來實(shí)現(xiàn)序列化操作,其他的時(shí)候我們?nèi)匀恍枰褂肞arcelable來實(shí)現(xiàn)序列化操作
- 在Android中效率并不是最重要的,而是內(nèi)存, 通過比較Parcelable在效率和內(nèi)存上強(qiáng)于Serializable
個(gè)人小建議:
盡管Parcelable實(shí)現(xiàn)起來比較復(fù)雜,但是如果我們想要成為一名優(yōu)秀的Android軟件工程師,那么我們就需要勤快一些去實(shí)現(xiàn)Parcelable,而不是偷懶與實(shí)現(xiàn)Serializable,當(dāng)然實(shí)現(xiàn)Serializable也可以
到此這篇關(guān)于Android序列化接口Parcelable與Serializable接口對(duì)比的文章就介紹到這了,更多相關(guān)Android Parcelable與Serializable內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android序列化實(shí)現(xiàn)接口Serializable與Parcelable詳解
- Android序列化之Parcelable和Serializable的使用詳解
- Android Parcelable與Serializable詳解及區(qū)別
- Android Intent傳遞對(duì)象的兩種方法(Serializable,Parcelable)詳細(xì)介紹
- Android中Serializable和Parcelable序列化對(duì)象詳解
- Android中Intent傳遞對(duì)象的兩種方法Serializable,Parcelable
- Android中使用Intent在Activity之間傳遞對(duì)象(使用Serializable或者Parcelable)的方法
相關(guān)文章
Android自定義view實(shí)現(xiàn)動(dòng)態(tài)柱狀圖
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Android實(shí)現(xiàn)瘋狂連連看游戲之游戲效果預(yù)覽(一)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)瘋狂連連看游戲之游戲的效果預(yù)覽,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
android的RecyclerView實(shí)現(xiàn)拖拽排序和側(cè)滑刪除示例
在平時(shí)開發(fā)應(yīng)用的時(shí)候,經(jīng)常會(huì)遇到列表排序、滑動(dòng)刪除的需求。這篇文章主要介紹了android的RecyclerView實(shí)現(xiàn)拖拽排序和側(cè)滑刪除示例,有興趣的可以了解一下。2017-02-02
Android 掃描附近的藍(lán)牙設(shè)備并連接藍(lán)牙音響的示例
本篇文章主要介紹了Android 掃描附近的藍(lán)牙設(shè)備并連接藍(lán)牙音響的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09
Android實(shí)現(xiàn)獲取應(yīng)用程序相關(guān)信息列表的方法
這篇文章主要介紹了Android實(shí)現(xiàn)獲取應(yīng)用程序相關(guān)信息列表的方法,是應(yīng)用管理器常用的功能,需要的朋友可以參考下2014-07-07
listview 選中高亮顯示實(shí)現(xiàn)方法
當(dāng)點(diǎn)擊左側(cè)ListView后,選中的一行就會(huì)一直呈高亮狀態(tài)顯示,圖中選中行字的顏色顯示為藍(lán)色(注意:是選中行后一直高亮,而不是只是點(diǎn)擊時(shí)高亮),如果再次點(diǎn)擊另外的一行, 則新的那一行就高亮,下面就來實(shí)現(xiàn)這個(gè)高亮效果的顯示2012-11-11
Android自定義View實(shí)現(xiàn)廣告信息上下滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)廣告信息上下滾動(dòng)的具體代碼,感興趣的小伙伴們可以參考一下2016-05-05

