Hay un servicio web que proporciona algunos datos que mi aplicación utiliza. Esta información es bastante grande y solo cambia MUY infrecuentemente, así que pensé que sería bueno si la aplicación pudiera almacenarla en la tarjeta SD y solo actualizarla si es necesario.Recomendaciones para datos persistentes en Android?
Actualmente estoy tomando los datos (un archivo XML) y analizándolos en un árbol de objetos usando SAX. Este proceso toma (como máximo) 2-3 segundos sobre mi WIFI. Sin embargo, la serialización de los objetos resultantes a la tarjeta SD tarda significativamente más (un minuto o más) y la deserialización aún lleva más tiempo que la simple descarga/análisis en primer lugar.
¿Alguien tiene alguna recomendación para mejorar esto o ideas alternativas para conservar estos datos (aparte de simplemente guardar el archivo XML y volver a realizar el repaso cada vez)?
ACTUALIZACIÓN: Esto es más que una colección trivial de registros. El objeto-gráfico es realmente ridículamente complejo y almacenarlo en una base de datos resultaría en docenas de tablas con un solo registro en cada una.
Estaba considerando seriamente almacenar el archivo XML directamente desde el servidor (y probablemente lo haga) ... parecía deserializar objetos cada vez que los datos "deberían" ser más rápidos que reparsing un archivo XML. –
La serialización de objetos funciona porque es muy genérica y el código genérico puede ejecutarse muy lentamente. Además, el almacenamiento es mucho más grande; Creo que reduje el tamaño de los archivos de más de 10 kilobytes con serialización a menos de un kilobyte (eso sí cuenta el gzip de mi JSON). –