2010-08-04 12 views
8

Necesito serializar un estado integral de aplicación (juego) para ser transmitido a través de una red o guardado en el disco y recuperado en un momento posterior.Serializando Android Bundle para almacenamiento en red y/o persistente?

Los paquetes, por supuesto, se utilizan para guardar/restaurar estados en varios casos de uso, por lo que su uso sería ideal. Sin embargo, por alguna razón, Bundle no es serializable.

La búsqueda de una solución solo ha dado como resultado el inaceptable truco de convertir el paquete en una parcela y organizarlo, pero no es una solución aceptable porque no hay garantía de que sea posible desarticular los datos en un fecha posterior o en un dispositivo remoto.

Así que, como parece ahora, la única solución parece ser obtener todo el conjunto de claves del paquete, obtener cada objeto contenido, hacer un cambio/caso bastante grande en cada clase de objeto y construir manualmente un ByteBuffer gigante o similar de todos estos datos, junto con información de tamaño y tipo para poder reconstruir todo exitosamente en el otro lado.

No exactamente suave.

¿Alguien sabe de una mejor manera? Tal vez alguien ya ha creado una función de utilidad para Bundle que hace esto?

+0

Esto es solo un punto estúpido de los pantalones en la cabeza de Android. Como se indicó, el paquete <-> Parcelable es un núcleo factible (y Parcable <-> binario), pero Parcelable está diseñado solo para uso no persistente. Debería haber incluido un paquete persistente <-> XML o Bundle <-> JSON (o cualquier cosa, realmente) .. la "mejor" solución que he visto es simplemente meter un poco de JSON en una propiedad Bundle y, de otro modo, hacer que Bundle se escape y muera. –

Respuesta

1

¡Gran pregunta! Me pregunto si necesita serializar todo el paquete o solo la información contenida. Probablemente solo necesite la información que puede guardar en cualquier tipo (Cadena, Lista o Matriz). Eche un vistazo a las subclases de java.io.Serializable, que es descomunal.

Cuestiones relacionadas