¿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.

  • Por qué getSpeed ​​() siempre devuelve 0 en android
  • C + + pura aplicación para Android y su rendimiento
  • Buenas prácticas para ordenar una lista con una de las cuatro reglas
  • Android webview rendimiento, ¿qué me falta?
  • Android: ¿Cuánto sobrecarga se genera ejecutando un método vacío?
  • Android Listview reduce la velocidad de desplazamiento
  • Android drawBitmap rendimiento de lotes de mapas de bits?
  • Cómo liberar memoria en android para evitar fugas de memoria
  • ¿Cuál es la mejor práctica de almacenar imágenes en android en la tarjeta SD o en SQL lite DB?
  • Comportamiento de vista Web con Galaxy S cargar página web toma edades
  • ¿Es bueno llamar a findViewById cada vez en el ciclo de vida de la actividad cuando sea necesario?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.