2010-08-04 7 views
8

Je suis dans le besoin de sérialiser un état d'application complet (jeu) à transmettre sur un réseau ou enregistré sur le disque et récupéré à un moment ultérieur.Sérialisation d'Android Bundle pour le stockage réseau et/ou persistant?

Les paquets, bien sûr, sont utilisés pour sauvegarder/restaurer des états dans plusieurs cas d'utilisation, donc les utiliser serait idéal. Toutefois, pour une raison quelconque, Bundle n'est pas sérialisable.

La recherche d'une solution n'a fait qu'aggraver le piratage inacceptable de la transformation de l'ensemble en une parcelle, puis de l'organiser, mais ce n'est pas une solution acceptable car il n'est pas garanti qu'il sera possible de démonter les données date ultérieure ou sur un appareil distant. Donc, comme il semble maintenant, la seule solution semble être d'obtenir l'ensemble des clés de l'ensemble, obtenir chaque objet contenu, faire un commutateur/cas plutôt énorme sur chaque Object.Class et construire manuellement un ByteBuffer géant ou similaire de toutes ces données, avec la taille et le type d'information afin de reconstruire avec succès l'ensemble de l'autre côté.

Pas exactement lisse.

Quelqu'un sait-il d'une meilleure façon? Peut-être que quelqu'un a déjà créé une fonction d'utilité pour Bundle qui fait cela?

+0

Ceci est juste un point stupide pantalons sur la tête d'Android. Comme indiqué, Bundle <-> Parcelable est faisable noyau (et parcable <-> binaire), mais Parcelable est conçu uniquement pour une utilisation non persistant. J'aurais dû inclure un bundle persistant <-> XML ou Bundle <-> JSON (ou quoi que ce soit, vraiment) .. la "meilleure" solution que j'ai vu est juste de pousser un peu de JSON dans une propriété Bundle et d'avoir un paquet. –

Répondre

1

Bonne question! Je me demande si vous avez besoin de sérialiser l'ensemble du paquet ou juste l'information contenue? Vous n'avez probablement besoin que des informations que vous pouvez sauvegarder dans n'importe quel type (String, List ou Array). Jetez un oeil sur les sous-classes de java.io.Serializable, ce qui est gigantesque.

Questions connexes