¿Cómo serializar Android Bundle para almacenamiento en red y / o persistente?
Tengo necesidad de serializar un estado de aplicación (juego) completo para ser transmitido a través de una red o guardado en disco y recuperado en un momento posterior.
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.
- Cómo poner una vista en el paquete
- Se produce ClassCastException en onRestoreInstanceState
- Definición de Android Bundle
- ¿Cómo usar Parcel en Android?
- ¿Qué significa bundle en Android?
La búsqueda de una solución sólo ha dado vuelta encima del hack inaceptable de dar vuelta al paquete en una parcela y después de ordenar eso, pero no es una solución aceptable porque no hay ninguna garantía que será posible unmarshall los datos en una fecha posterior o en Un dispositivo remoto.
Por lo que parece ahora, la única solución parece ser obtener el conjunto completo de claves del Bundle, obtener cada uno contenía objeto, hacer un switch / case bastante grande en cada Object.Class y construir manualmente un ByteBuffer gigante o similar de todos Estos datos, junto con el tamaño y el tipo de información con el fin de reconstruir con éxito todo el asunto 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?
- ¿Comprueba si dos objetos Bundle son iguales en Android?
- ¿Qué es un "lote" en una aplicación de Android?
- ¿Cómo puedo saber cuán grande es para hacer mi matriz de Parcel.readStringArray ()?
- Paso de paquete entre tres actividades en Android
- Fragmentos del paquete onCreateView (). ¿De dónde viene?
- Valor predeterminado en Bundle.getString (clave de cadena)
- NullPointerException (etc) de Parcel.readException
- Android Parcel.obtain () devuelve null?
Gran pregunta Me pregunto si necesita serializar todo el paquete o simplemente la información contenida? Probablemente sólo necesita la información que puede guardar en cualquier tipo (String, List o Array). Echa un vistazo a las subclases de java.io.Serializable , que es humongous.
- Emulador SDK de Android con resolución Full HD
- Cómo formatear la fecha de Android sin año y mostrar mes y día según la configuración local?