2010-08-04 59 views
8

我需要序列化一個全面的應用程序(遊戲)狀態,通過網絡傳輸或保存到磁盤並在稍後檢索。序列化用於網絡和/或永久存儲的Android Bundle?

捆綁包當然用於在多種使用情況下保存/恢復狀態,因此使用它們將是理想選擇。但是,由於某些原因,Bundle不可序列化。

尋找一個解決方案只會讓Bundle變成一個包裹然後編組,這是不可接受的破解,但它不是一個可接受的解決方案,因爲不能保證可以解組數據以後的日期或在遠程設備上。

因此,現在看來,唯一的解決方案似乎是從Bundle中獲取整套密鑰,獲取每個包含的對象,在每個Object.Class上執行一個相當大的開關/案例,並手動構建一個巨大的ByteBuffer或類似的所有這些數據,以及大小和類型信息,以便成功重建整個事物的另一方面。

不完全平滑。

有誰知道更好的方法?也許有人已經爲Bundle創建了一個實用函數來做到這一點?

+0

這只是一個Android的褲子在腦海中的愚蠢點。如上所述,Bundle <-> Parcelable是可行的核心(和Parcable <-> Binary),但Parcelable僅爲非持久使用而設計。應該包括一些持久性的Bundle <-> XML或Bundle <-> JSON(或任何其他的,真的)..我見過的「最佳」解決方案只是將一些JSON插入到Bundle屬性中,否則將Bundle抓取並死亡。 – 2013-01-15 06:21:23

回答

1

非常好的問題!我想知道是否需要序列化整個捆綁包或僅包含信息?可能你只需要你可以保存的任何類型的信息(字符串,列表或數組)。看看java.io.Serializable這個很龐大的子類。