2012-01-17 10 views
10

Necesito almacenar un contenido de objeto en Sqlite. Me preguntaba cuál era la mejor manera de hacerlo con una serialización del objeto o con Parcelable.Android Store un objeto parcelable en SQLite

¿Es posible almacenarlo como Parcelable? ¿Cómo puedo hacerlo?

+0

¿realmente necesita mantener los datos en sqlite? ¿No sería mejor mantenerlos en una carpeta? – ademar111190

Respuesta

32

Le invitamos a convertir su objeto en algún tipo de estructura de datos persistente (XML, JSON, Serializable) y rellenarlo en alguna columna de la base de datos. Tenga en cuenta que aún tendrá que lidiar con problemas de compatibilidad (por ejemplo, la Versión 2 de su aplicación cambia una clase, que ahora necesita tratar con las estructuras de la Versión 1 y la Versión 2). También tenga en cuenta que, siguiendo esta ruta, perderá muchas capacidades de la base de datos (por ejemplo, consultar algo en el objeto).

También puede experimentar con bases de datos de objetos, o CouchDb, o almacenar su estructura de datos persistente en un archivo, si SQLite no es un requisito.

Lo que seguramente no funcionará de manera confiable es verter el Parcelable en un Parcel e intente almacenar el Parcel. Un Parcel está diseñado solo para IPC y no está diseñado para ser conservado. Esta es una de las razones por las que Parcelable es más rápido que Serializable.

+0

Como siempre, la respuesta perfecta :) De todos modos, no sé cuánto Serializable es escalable para las comparaciones hacia atrás. Creo que intentaré almacenar datas en JSON con algún tipo de compresión :) – StErMi

+1

@StErMi: Sí, si fuera por este camino, personalmente usaría JSON, o quizás XML, a menos que algunos de los datos no puedan posiblemente ser convertido en texto. Es mucho más fácil la depuración cuando puedes leer los datos, en lugar de ser un bloque críptico. – CommonsWare

+0

tienes razón :) Voy a intentarlo :) – StErMi

3

Si necesita conservar los datos, use Serializable. Parcelable es para uso de IPC. Es un formato binario y no recomendado para la persistencia.

Cuestiones relacionadas