¿Cómo almacenar en caché y almacenar objetos y establecer una política de expiración en android?

Tengo una aplicación de buscar datos de Internet, para un mejor rendimiento y ancho de banda, tengo que implementar una capa de caché.

Hay dos datos diferentes que vienen de Internet, uno está cambiando cada hora y otro no cambia básicamente. Por lo tanto, para el primer tipo de datos, necesito implementar una política de caducidad para hacerlo auto eliminado después de que se creó durante 1 hora, y cuando el usuario solicita que los datos, voy a comprobar el almacenamiento primero y luego ir a internet si no se encuentra nada.

Pensé en usar SharedPrefrence o SQLDatabase para almacenar los datos de json o la secuencia serializada del objeto.

Mi pregunta es:

1) ¿Qué debo usar, SharedPrefrence o SQLDatabase o cualquier otra cosa, un pedazo de datos no es grande, pero hay tal vez muchos casos de esos datos.

2) Cómo implementar ese sistema expirar.

Utilizaría SQLite para el almacenamiento + tendría una last invalidated timestamp de last invalidated timestamp en la subclase de la Application .
Se obtendría comparado con System.currentTimeMillis() en cada llamada de acceso a datos para decidir si un nuevo conjunto se debe buscar. Tener una capa delgada proxy para eso.

Puede utilizar el método HTTP HEAD para comprobar la fecha de modificación en el servidor y ver si realmente necesita obtener nuevos datos. Cada vez que se inicia la aplicación ya intervalos mientras se está ejecutando, consulte al servidor para ver si los datos han cambiado. Esto supone que los datos se almacenan en caché en el servidor y no se generan dinámicamente en cada solicitud o dependen de qué cliente realiza la solicitud.

Por lo tanto, es necesario almacenar los datos y la fecha de cada elemento. SharedPreferences debería ser suficiente si los datos son una cadena de longitud moderada y hay menos que unos pocos kilobytes en total. Si hay un límite superior conocido en la longitud de los datos a continuación, utilice una base de datos, de lo contrario podría utilizar archivos sin formato. SharedPreferences escribe un archivo xml cada vez que comete.

Puede crear un hilo con un intervalo de suspensión largo para realizar las comprobaciones periódicas o crear un controlador y utilizar postDelayed o similar para generar un hilo de comprobación. Compruebe los elementos tan a menudo como su máximo para los datos obsoletos. Si revisa cada 10 minutos, permite hasta 10 minutos de datos antiguos, con un promedio de la mitad de eso. La comprobación en el lanzamiento hará que las cosas aparecen hasta la fecha en la mayoría de los casos de todos modos.

Si todos los elementos expiran de una vez, sólo tendrá que comprobar la fecha de un elemento para saber que deben actualizarse. Si no, puede intentar utilizar GET condicional en lugar de comprobar la CABEZA de cada elemento.

  • ¿Cómo puedo mejorar el rendimiento (primer tiempo de carga, suavidad de desplazamiento) de un GridView que representa muchas imágenes grandes?
  • ¿El aumento de tamaño de jittable se correlaciona con la pérdida de memoria en android?
  • Android java.lang.OutOfMemoryError?
  • Mejorando la velocidad de getpixel () y setpixel () en Android Bitmap
  • ¿Qué indica sf_frame_dur en los registros de Logcat de Android?
  • ¿La codificación dura de la cadena afecta el rendimiento?
  • Android webview rendimiento, ¿qué me falta?
  • Android - Declarativa vs interfaz de usuario programática
  • Dibujo (filtrado) 100k + puntos a MapView en Android
  • ¿Debo cambiar el tamaño del mapa de bits antes de agregar a un ImageView o dejar que el ImageView cambiar el tamaño del mapa de bits?
  • Cómo determinar qué está ralentizando la aplicación para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.