對 Serializable和Parcelable理解
1、首先他們兩個接口都是為了實現對象的序列化,使之可以傳遞,所謂序列化就是將對象信息裝換成可以存儲的介質的過程。
2、Serializable是jdk所提供的序列化接口,該接口存在于io包下,可想用于輸入輸出,使用非常簡單,只要讓你的類實現此接口就ok了;可以使用transient關鍵字修飾你不想序列化的屬性。
3、Parcelable是sdk所提供的序列化接口,使用較上者麻煩,實現此接口后,需要重寫writeToParcel方法,將需要序列化的屬性寫入Parcel中;
然后還需要CERATOR靜態成員屬相,以便從parcel中取出數據。如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public static final Creator<Pen> CREATOR = new Creator<Pen>() { @Override public Pen createFromParcel(Parcel in) { return new Pen(in); } @Override public Pen[] newArray( int size) { return new Pen[size]; } }; @Override public int describeContents() { return 0 ; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(color); dest.writeInt(size); } |
4、兩種都是用于支持序列化、反序列化話操作,兩者最大的區別在于存儲媒介的不同,Serializable使用IO讀寫存儲在硬盤上,而Parcelable是直接在內存中讀寫,很明顯內存的讀寫速度通常大于IO讀寫,所以在Android中通常優先選擇Parcelable。
通過此文希望能幫助有需要的小伙伴,徹底理解Java Serializable和Parcelable的知識,謝謝大家對本站的支持!