¿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.
- ¿Es bueno llamar a findViewById cada vez en el ciclo de vida de la actividad cuando sea necesario?
- ¿Cómo puedo evitar los retrasos de recolección de basura en juegos Java? (Mejores Prácticas)
- Coracteres corrompidos o desaparecidos después de ejecutar Proguard
- Cómo obtener el tiempo de computación en NDK
- Android Google Map addMarker () muy lento al agregar 400 marcadores
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.
- ¿Por qué WebView es mucho más rápido que un TextView?
- ¿Por qué la aplicación diseñada por el material es más lenta que la aplicación diseñada por holo?
- Simular ancho de banda bajo en android
- Rendimiento en Android Juego
- Android - ¿qué es cola de mensajes encuesta nativa una vez en android?
- Cómo detectar la velocidad de la CPU android?
- Android drawBitmap rendimiento de lotes de mapas de bits?
- Forzar Renderscript para que se ejecute en CPU o GPU (Atleast para fines de ajuste de rendimiento)
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