Serializable和Parcelable的區別

weixin_34402408發表於2016-07-12

我們都知道Android中序列化有Serializable和Parcelable兩種。

<p>物件的序列化:把物件轉換為位元組序列並儲存至一個媒介的過程
<p>物件的反序列化:將位元組序列恢復成物件的過程。

為什麼要將物件序列化?

<pre>

  1. 永久性儲存物件,儲存物件的位元組序列到本地檔案中

  2. 通過序列化物件在網路中傳遞物件

  3. 通過序列化物件在程式間傳遞物件
    </pre>

    Serializable的作用是將資料物件存入位元組流中,在需要時重新生成物件,主要應用是利用外部儲存裝置儲存物件狀態,以及通過網路傳輸物件。
    implements Serializable介面的作用就是給物件打一個標記,系統會自動將其序列化。

區別:

最大的區別就是儲存媒介的不同:
Serializable使用IO讀寫儲存在硬碟上;
Parcelable是直接在記憶體中讀寫,記憶體的讀寫速度遠大於IO讀寫,所以Parcelable高效。

  1. <u>在使用記憶體時,Parcelable比Serializable效能高,推薦使用Parcelable</u>;
  2. <u>Serializable在序列化時會產生大量的臨時變數,會引起頻繁的GC</u>;
  3. <u>Parcelable不能使用在要將資料儲存在磁碟上的情況,因為Parcleable不能很好的保證資料的持續性</u>。在外界有變化的情況下,儘管Serializable效率低點,也不提倡使用,但在這種情況下,還是<u>建議使用Serializable</u>。

相關文章