¿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.
- ¿Cómo puedo aumentar el rendimiento del siguiente código?
- ¿Mostrar un mapa enorme con un buen rendimiento en Android?
- Iteradores temporales de Java están ralentizando mi Android
- RecyclerView vs ViewPager
- Acerca de la optimización de la implementación de patrones de ViewHolder en ListView
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.
- ¿Cómo actualizar Android ListView con datos dinámicos en tiempo real?
- Acelerar gradle build en la aplicación multidex
- Cómo medir FPS en Android durante el desarrollo de aplicaciones
- ¿Los dispositivos móviles tienen CPU suficiente para admitir HTTPS para todo el tráfico de un sitio web?
- Android ListView Actualizar una sola fila
- Heap sigue aumentando en Google Map API V2
- Android Studio es increíblemente lento y laggy
- Android: Actualiza los datos de fragmento anteriores cuando se pulsa el botón de retroceso
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.
- Explorador de archivos en Android Studio 1.5.1
- Utilizar la barra de progreso circular como alarmdialog o progressdialog