Serializable和Parcelable的區別
我們都知道Android中序列化有Serializable和Parcelable兩種。
<p>物件的序列化:把物件轉換為位元組序列並儲存至一個媒介的過程
<p>物件的反序列化:將位元組序列恢復成物件的過程。
為什麼要將物件序列化?
<pre>
永久性儲存物件,儲存物件的位元組序列到本地檔案中
通過序列化物件在網路中傳遞物件
-
通過序列化物件在程式間傳遞物件
</pre>Serializable的作用是將資料物件存入位元組流中,在需要時重新生成物件,主要應用是利用外部儲存裝置儲存物件狀態,以及通過網路傳輸物件。
implements Serializable介面的作用就是給物件打一個標記,系統會自動將其序列化。
區別:
最大的區別就是儲存媒介的不同:
Serializable使用IO讀寫儲存在硬碟上;
Parcelable是直接在記憶體中讀寫,記憶體的讀寫速度遠大於IO讀寫,所以Parcelable高效。
- <u>在使用記憶體時,Parcelable比Serializable效能高,推薦使用Parcelable</u>;
- <u>Serializable在序列化時會產生大量的臨時變數,會引起頻繁的GC</u>;
- <u>Parcelable不能使用在要將資料儲存在磁碟上的情況,因為Parcleable不能很好的保證資料的持續性</u>。在外界有變化的情況下,儘管Serializable效率低點,也不提倡使用,但在這種情況下,還是<u>建議使用Serializable</u>。
相關文章
- 序列化Serializable和Parcelable的理解和區別
- Parcelable和Serializable知識總結
- Android重修課 — Serializable&ParcelableAndroid
- Android重修課 -- Serializable&ParcelableAndroid
- ../和./和/的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery
- T和?的區別
- ++a和a++的區別
- makefile =和:=的區別
- 【實驗】Oracle的serializable隔離性級別影響Oracle
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- 和區別
- Serializable介面
- MYSQL和SQL的區別MySql
- varchar和char的區別
- &self 和 self 的區別
- var和public的區別
- filter和interceptor的區別Filter
- useEffect 和 useLayoutEffect 的區別
- SDK和API的區別?API
- var 和 let 的區別
- WebApi和MVC的區別WebAPIMVC
- service和systemctl的區別
- GET和POST的區別?
- GET和POST的區別
- button和submit的區別MIT
- GET 和 POST 的區別
- 【Java】equals 和 == 的區別Java
- django和flask的區別DjangoFlask
- promise 和 Observable 的區別Promise