En caché JSON de webservice en android – patrón?

Quiero almacenar en caché los datos de un json-webservice en mi aplicación android. La primera vez, la aplicación se inicia, debe esperar hasta que todos los datos se cargaron de servicio. Después de esa carga inicial, la aplicación debe comprobar de vez en cuando (algunos días) si hay nuevos datos disponibles. En caso afirmativo, los datos almacenados localmente deben actualizarse y cargarse la próxima vez que se inicie la aplicación.

Actualmente estoy tratando de resolver esto por un IntentService y por el ahorro de los datos cargados en un archivo – pero no es un muy limpio una manera hermosa!

¿Alguien sabe una manera limpia de hacer esto? ¿Un patrón de caché?

Aquí hay una manera sencilla de hacer esto que no implica un servicio, hilos, alarmas, etc sólo definir un envoltorio alrededor de su JSON, como,

class MyJson { JSONObject getJson() { ... }; } 

La implementación de getJson() hace lo siguiente,

 if (cached json file exists) { if (json file last modified + 1 day > current time) { json = get from network; cache json in file; } else [ json = get from file; } } else { json = get from network; cache json in file; } 

En otras palabras, lazy-fetch el json fresco de la red cuando lo necesite. Esto es mucho más sencillo que actualizar periódicamente un archivo de caché estableciendo alarmas y ejecutando un servicio para actualizar el caché …

Desde tu aplicación, haces lo mismo, ya sea la primera carga o la Nª carga de los datos. Usted llama getJson() ,

 new Thread(new Runnable() { public void run() { json = getJson(); // do whatever you need to do after the json is loaded } }).start(); 

El único inconveniente es que de vez en cuando, la llamada para obtener el JSON tomará más tiempo y, en consecuencia, debe ejecutarlo en un hilo para no ANR la interfaz de usuario … pero debe hacerlo de todos modos, ya sea en un archivo o Extraído de la red, debe evitar hacer IO en el subproceso de interfaz de usuario.

  • Error de java.lang.outofmemory (servicios web) en android
  • ¿Cómo funciona la sincronización de datos y cómo la uso en aplicaciones cliente-servidor?
  • ¿La mejor práctica para implementar retroalimentación de retorno a la actividad recreada?
  • Autenticación entre la aplicación de Android y el servicio web + facebook login
  • Autenticación de Webservice de iPhone y token de acceso
  • Android, Ksoap, webService
  • No se pueden serializar las fechas con ksoap2
  • ¿Cómo puedo recibir notificaciones múltiples usando GCM sin reemplazar la precedente?
  • ProgressDialog o ProgressBar ralentiza la aplicación que ejecuta Android 4.1
  • Datos de servicio web de caché de android
  • Creación de servicio web para aplicaciones de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.