2010-08-04 6 views
8

Bir ağ üzerinden iletilecek veya diske kaydedilecek ve daha sonra alınacak kapsamlı bir uygulama (oyun) durumunu serileştirmeye ihtiyacım var.Android Bundle'ı ağ ve/veya kalıcı depolama için seri hale getirme?

Paketler, elbette, birkaç kullanım durumunda durumları kaydetmek/geri yüklemek için kullanılır, dolayısıyla bunları kullanmak ideal olacaktır. Ancak, bir sebepten dolayı, Bundle seri hale getirilemez.

Bir çözüm aramak, Bundle'u bir Parsel'e dönüştürmenin kabul edilemez bir şekilde kesilmesini sağladıktan sonra bunu marşileştirdi, ancak kabul edilebilir bir çözüm olmadı çünkü verilerin daha sonra ya da uzak bir cihazda.

Şimdi göründüğü gibi, tek çözüm, Bundle'ın tüm anahtar kümesini almak, her bir Object nesnesini almak, her Object.Class üzerinde oldukça büyük bir switch/case yapmak ve bir ByteBuffer'ı el ile oluşturmak için görünür. diğer taraftaki tüm şeyleri başarılı bir şekilde yeniden inşa etmek için tüm bu verilerden veya benzerlerinden, boyut ve tür bilgisiyle birlikte.

Tam olarak düzgün değil.

Daha iyi bir yolu bilen var mı? Belki de birileri Bundle için bunu yapan bir yardımcı fonksiyon yaratmış olabilir mi?

+0

Bu, yalnızca Android'in başındaki bir aptal noktasıdır. Belirtildiği gibi, Bundle <-> Parcebleble yapılabilir çekirdek (ve Parcable <-> İkili), ancak Parcelable yalnızca kalıcı olmayan kullanım için tasarlanmıştır. Bazı kalıcı Bundle <-> XML veya Bundle <-> JSON'u (ya da gerçekten bir şey) dahil etmeliyiz. Gördüğüm "en iyi" çözüm, sadece bir JSON'u Bundle özelliğine sokmak ve Bundle'ın sürünmesi ve ölmesidir. –

cevap

1

Harika Soru! Paketin tamamını veya içerdiği bilgileri serileştirmeniz gerekip gerekmediğini merak ediyorum. Muhtemelen sadece herhangi bir türde (String, List veya Array) kaydedebileceğiniz bilgilere ihtiyaç duyarsınız. Humous olan java.io.Serializable alt sınıflarına bir göz atın.

İlgili konular