Parcelable和Serializable的區別

2020-09-24 17:00:08

1.實現

Parcelable的實現:

writeToParcel(Parcel dest, int f1ags)
describeContents()
Parcelable.Creator介面的類

Serializable的實現:

實現Serializable介面
serialVersionUID

2.原理

Parcelable自己實現了序列化和反序列化過程,Serializable是基於反射的操作,生成大量的臨時物件,並且伴隨著大量的IO操作。

3.效率和使用場景不同

Parcelable是位於記憶體上,本質是是在記憶體上通過malloc分配的,傳輸效率高,速度是Serializable的10倍。
Serializable是在硬碟上操作的,速遞慢。但是硬碟的持久化更穩定,適合長期的持久化,比如需要儲存或網路傳輸資料時選擇Serializable。

最後

Binder 的緩衝區是有大小限制的大約是2M,而一個程序預設有 16 個 Binder 執行緒,所以一個執行緒能佔用的緩衝區比較小。容易造成這類The Binder transaction failed because it was too large 異常。
參考: