Estoy pensando en cómo implementar de manera ideal una capa de caché en mi aplicación de Android.Estrategia de almacenamiento en caché para la aplicación de Android
Actualmente tengo actividades genéricas que muestran datos procedentes de un servidor remoto. Los datos están representados por una DTO TemplateInstance. Cada TemplateInstance tiene un Mapa con Componentes y cada uno de los componentes puede tener componentes secundarios. Los componentes en sí mismos pueden ser Texto (Cadena), Imagen (Array Byte) o Tiempo (o lo que sea subcomponiendo Componente).
Actualmente mi aplicación carga una TemplateInstance desde el servidor cada vez que se inicia una actividad.
ahora me gustaría aplicar una capa caché en la aplicación, de manera que
- el tiempo para mostrar los datos se reduce al mínimo,
- los datos se actualizan cuando se se cambia en el servidor.
Mi estrategia para esto se parece a esto:
- El comenzó Actividad carga el TemplateInstance de un almacenamiento local mediante un ID (si existe)
- A cheques UpdateService en el fondo si el TemplateInstance ha cambiado en el servidor (usando un campo de versión en la base de datos)
- Si la versión del servidor es mayor que la local o no hay TemplateInstance local, entonces recupere los datos del servidor, actualice la tienda local y actualice la vista
Implementé esto ya con éxito con db4o. Hay sólo dos problemas con esta solución:
- db4o es bajo licencia GPL (no puedo usarlo)
- db4o es muy lento cuando cargo TemplateInstances que tienen muchas imágenes (4 segundos para una consulta)
Ahora estoy buscando el mejor reemplazo para db4o. Mis ideas acerca de que son hasta ahora:
- SQLite no es adecuado debido a la estructura de los datos
- No necesito la funcionalidad de base de datos - la recuperación de objetos por ID sería suficiente
- Sosteniendo los objetos en la memoria sería significativamente más rápido
- el estado de la memoria debe ser guardado en el disco cuando sale de la aplicación, por lo que los objetos pueden ser reinstantiated en el arranque
¿te ha gustado es la mejor solución ¿para esto?
Mi investigación sobre este me llevó a EHCache y JCS, que nunca he usado. ¿Crees que son apropiados, también con respecto a los recursos en un teléfono Android? ¿O tienes otras sugerencias?
Puede encontrar la implementación de caché de la aplicación de Android desde [aquí] (https://stackoverflow.com/a/45086960/5835760). –