我們都知道Android中序列化有Serializable和Parcelable兩種烤低。
<p>對象的序列化:把對象轉(zhuǎn)換為字節(jié)序列并存儲至一個媒介的過程
<p>對象的反序列化:將字節(jié)序列恢復(fù)成對象的過程绩衷。
為什么要將對象序列化啤贩?
<pre>
永久性保存對象,保存對象的字節(jié)序列到本地文件中
通過序列化對象在網(wǎng)絡(luò)中傳遞對象
-
通過序列化對象在進程間傳遞對象
</pre>Serializable的作用是將數(shù)據(jù)對象存入字節(jié)流中,在需要時重新生成對象,主要應(yīng)用是利用外部存儲設(shè)備保存對象狀態(tài)禀倔,以及通過網(wǎng)絡(luò)傳輸對象。
implements Serializable接口的作用就是給對象打一個標記参淫,系統(tǒng)會自動將其序列化蹋艺。
區(qū)別:
最大的區(qū)別就是存儲媒介的不同:
Serializable使用IO讀寫存儲在硬盤上;
Parcelable是直接在內(nèi)存中讀寫,內(nèi)存的讀寫速度遠大于IO讀寫黄刚,所以Parcelable高效。
- <u>在使用內(nèi)存時民效,Parcelable比Serializable性能高憔维,推薦使用Parcelable</u>;
- <u>Serializable在序列化時會產(chǎn)生大量的臨時變量,會引起頻繁的GC</u>畏邢;
- <u>Parcelable不能使用在要將數(shù)據(jù)存儲在磁盤上的情況业扒,因為Parcleable不能很好的保證數(shù)據(jù)的持續(xù)性</u>。在外界有變化的情況下舒萎,盡管Serializable效率低點程储,也不提倡使用,但在這種情況下臂寝,還是<u>建議使用Serializable</u>章鲤。