① intent傳對象為什麼要序列化
傳遞。
三. Android中的兩種序列化機制
第一種: JAVA中的Serialize機制,譯成串列化、序列化……,其作用是能將數據對象存入位元組流當中,在需要時重新生成對象。主要應用是利用外部存儲設 備保存對象狀 態,以及通過網路傳輸對象等。
第二種:在Android系統中,定位為針對內存受限的設備,因此對性能要求更高,另外系統中採用了新的IPC(進程間通信)機制,必然要求使用性能更出色的對象傳輸方式。在這樣的環境下, Parcel被設計出來,其定位就是輕量級的高效的對象序列化和反序列化機制。
Android中序列化有以下幾個特
② 什麼是序列化和反序列化
序列化與反序列化是數據存儲與傳輸的關鍵技術。它們將復雜數據結構或對象轉化為可存儲或傳輸的格式,如字元串、二進制數據等。序列化過程將內存中的對象狀態轉換為安全存儲或傳輸的格式,確保即使程序停止運行,數據也不會丟失。序列化後的格式包括二進制、XML、JSON等,具體選擇取決於需求和場景。反序列化則將序列化後的數據格式還原成對象或數據結構,支持數據在不同程序、運行實例或平台之間的共享與傳遞。這一技術在現代軟體開發中具有重要價值,為數據的存儲與通信提供了便利。
③ 探索Android開源框架 - 8. Gson使用及源碼解析
深入解析Android開源框架中的Gson使用及其源碼解析,Gson作為Java語言的高效JSON轉換庫,以其簡潔的API和高性能的特點,成為Android開發中進行數據序列化和反序列化的首選工具。本文將詳細介紹Gson的使用方法,包括基本的解析與生成、屬性重命名、POJO與JSON的欄位映射規則、泛型的封裝、序列化與反序列化過程,以及如何進行欄位過濾與自定義序列化器和反序列化器的實現。
1. **基本的解析與生成**
使用Gson進行JSON字元串解析時,可以通過Gson對象的fromJson方法將JSON字元串轉換為Java對象,反之,使用toJson方法將Java對象轉換為JSON字元串。
2. **屬性重命名**
通過使用@SerializedName註解,可以方便地在POJO類中重命名JSON欄位,以匹配服務端返回的數據結構,從而避免硬編碼的字元串匹配。
3. **POJO與JSON的欄位映射規則**
Gson通過構建一個映射規則來匹配JSON欄位到POJO類的屬性,確保數據的正確解析與生成。這主要通過類型適配器(TypeAdapter)來實現,使得Gson能夠理解如何處理復雜數據類型,如日期、集合等。
4. **泛型的封裝**
在使用Gson進行序列化和反序列化時,可以通過泛型來保證類型安全,確保不會出現類型轉換錯誤。GsonBuilder提供了一系列方法來實現泛型的封裝,使得API調用更為清晰和明確。
5. **Gson的序列化、反序列化**
通過Gson的API,可以輕松實現Java對象到JSON字元串的序列化,以及從JSON字元串反序列化到Java對象的過程。這使得數據在不同系統間傳輸變得簡單高效。
6. **欄位過濾**
提供了多種方法進行欄位過濾,如使用@Expose註解、基於版本的過濾、訪問修飾符、以及基於策略的自定義過濾規則,以滿足不同的數據處理需求。
7. **TypeAdapter、JsonSerializer與JsonDeserializer**
實戰中,可能需要處理一些特殊的數據類型或復雜邏輯,這時可以通過實現JsonSerializer或JsonDeserializer來自定義序列化和反序列化過程。TypeAdapter則可以用於處理復雜類型的序列化。
8. **實戰TypeAdapterFactory**
在某些場景下,可以通過實現TypeAdapterFactory來創建自定義的TypeAdapter,從而實現更為靈活的數據處理邏輯。
9. **@JsonAdapter註解**
用於指定自定義的序列化器或反序列化器,簡化了實現自定義序列化邏輯的步驟,使得代碼更為簡潔和易讀。
10. **源碼解析**
通過深入源碼分析,可以更好地理解Gson內部的實現機制,如fromJson方法如何獲取適配器、getAdapter方法如何選擇適配器、Gson的構造方法如何初始化適配器列表,以及如何通過反射機制創建綁定欄位等關鍵邏輯。這不僅有助於解決實際開發中的問題,還能加深對Gson工作的理解,為後續的優化和定製提供基礎。