轉 序列化Serializable和Parcelable的區別詳解


什么是序列化,為什么要進行序列化

答:對象要進行傳輸(如:activity 與activity間 ,網絡間 進程間等等)、存儲到本地就必須進行序列化 。

這種可傳輸的狀態就是序列化。

怎么序列化??兩種

1.Serializable (java 自帶)

方法:對象繼承 Serializable類即可實現序列化,就是這么簡單,也是它最吸引我們的地方

2.Parcelable(Android專用):Parcelable方式的實現原理是將一個完整的對象進行分解,用起來比較麻煩,但我們有工具,還是很簡單的具體如下

方法:1.繼承 Parcelable

          2、復寫兩個方法,分別是describeContents和writeToParcel

          3、實例化靜態內部對象CREATOR,實現接口Parcelable.Creator 。

說不如做,直接上圖上代碼

 

 

 

 
 

1-1

如何選擇

選擇序列化方法的原則

1)在使用內存的時候,Parcelable比Serializable性能高,所以推薦使用Parcelable。

2)Serializable在序列化的時候會產生大量的臨時變量,從而引起頻繁的GC。

3)Parcelable不能使用在要將數據存儲在磁盤上的情況,因為Parcelable不能很好的保證數據的持續性在外界有變化的情況下。盡管Serializable效率低點,但此時還是建議使用Serializable 。

4)android上應該盡量采用Parcelable,效率至上,效率遠高於Serializable

 

綜上所述:對於我們Android開發者來說,最好的還是用Parcelable序列化,就是寫起來挺費事,沒事我們是程序員自然有高端的辦法

Androidstudio 插件一鍵生成代碼,實現Parcelable就是這么簡單,圖

setting  -- pugins --輸入par即可出來該插件。安裝后重啟androidstudio

 

 
 

ok ,從此序列化就不擔心了!



作者:ifjgm
鏈接:https://www.jianshu.com/p/1203ba41b0ac
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM