經過一段時間在我的Java(Android)類中使用實現Serializable後,我發現了Parcelable,但我找不到什麼時候選擇其中的一個。 他們之間的性能差異是什麼?何時以及如何實施Parcelable Vs.序列化?
回答
它們之間的性能差異是什麼?
Parcelable
是signficantly速度比是Serializable
爲在您使用Parcelable
的地方:Intent
演員,保存實例狀態Bundle
等
話雖這麼說,假設你沒有做很多這方面的東西,特別是在緊張的環路中,用戶不太可能真正注意到這種差異。
時,選擇一種或另
如果你正在做Android開發,寧願Parcelable
到Serializable
其中Parcelable
是一個選項。對於數據持久性,最多使用Serializable
,儘管我會推薦其他序列化選項(例如,通過Gson的JSON)。
對此的一個主要例外是,如果您的Java對象位於可從Android和其他Java環境中使用的獨立庫中。這些環境不會有Parcelable
,但Serializable
可以在兩個地方使用。
Parcelable協助在Android組件之間傳遞數據。捆綁者將包裹發送,發送和接收,然後在另一側解組,以重新構建原始包裹的副本。
w.r.t Serializable你只需要在一個類及其子類上實現Serializable接口。它是一個標記接口,意味着沒有實現的方法,Java將盡其最大努力有效地對其進行序列化。它使用Reflection來創建大量臨時對象並導致相當多的垃圾收集。
每個谷歌工程師Parcelable比Serializable快10倍以上。在Parcelable中,開發人員編寫自定義代碼進行封送和反編組,因此與序列化相比,它創建的垃圾對象更少。
您可以在此查看示例代碼來了解實現difference- Android: Difference between Parcelable and Serializable?
小心?
- 密切注意的是,你寫和讀你 值,並從Android使用閱讀 的包裹是盲目的Parcel.The機制的順序和完全信任你獲得訂單 正確,否則你會遇到運行時崩潰。
- 有沒有 簡單的方法來寫一個布爾到一個包裹。爲此,您可以用out.writeByte((byte) (myBoolean?1:0))替代 寫入一個相應值的字節;並用myBoolean = in.readByte()類似地檢索它!= 0;
檢查以下項目以避免手動編寫Parcelable。
Parcelable的Android更好: 1,它的速度更快 2.不使用反射(序列化使用反射)
- 1. 如何在實現Parcelable時排序ArrayList
- 2. Parcelable VS序列化 - 用於類沒有任何字段
- 3. 何時以及如何初始化ViewState?
- 4. 域vs DTO vs ViewModel - 如何以及何時使用它們?
- 5. AutoHotkey的:如何實施退出序列
- 6. 如何訪問ConcurrentDictionary以及如何序列化它?
- 7. 如何以及何時被Ruby的變量實例化
- 8. react - 如何實例化組件以及它們何時相同?
- 9. org.apache.solr.common.SolrException:TransactionLog不知道如何序列化org.bson.types.ObjectId類;嘗試實施ObjectResolver?
- 10. 如何序列化超類以及可序列化類的字段
- 11. Widevine加密所有類型的內容以及如何實施
- 12. PushNotifications - 如何實施
- 13. .NET如何以及何時實際編譯代碼?
- 14. 如何發佈序列化數據以及jQuery.getScript()調用?
- 15. 何時何地實施ACL
- 16. 什麼是序列化和Parcelable
- 17. parcelable和序列化之間的區別?
- 18. Android Parcelable vs SQLite
- 19. 如何實施getElementByClassName()
- 20. xml vs sqlite for android以及如何
- 21. 如何反序列化時
- 22. 如何實施以下搜索類型:
- 23. 如何實施didReceiveMemoryWarning?
- 24. 何時何時使用以及何時不使用DP和PX措施Android
- 25. 序列化和反序列化以及Python RTree
- 26. 無法讓簡單的COM項目工作:在哪裏以及如何實施?
- 27. 使用DTO vs序列化實體
- 28. 序列化VS Gson
- 29. 如何實施運行時授權?
- 30. 實施以下系列?
對於Parcellable檢查此鏈接。 : - http://stackoverflow.com/a/7181792/2362301 對於seriallizable結帳此鏈接: - http://www.coderzheaven.com/2012/07/25/serialization-android-simple-example/ – AmmY
Did你甚至*嘗試*谷歌['Parcelable VS. Serializable'(https://www.google.com/search?q=Parcelable+Vs.+Serializable)? – Andreas