quitar - ¿Patrón de Android Volley+Loader?
quitar patron de desbloqueo sin borrar datos (4)
AFAIK y yo hemos visto en las fuentes, las respuestas a sus solicitudes se almacenarán en caché, SI el servidor envía los headers
almacenamiento en caché adecuados (ETag), y la segunda vez que intente realizar una solicitud GET
, a la misma url, será provisto de una respuesta del cache
, en lugar de llamar a la Network
nuevamente (por defecto, Volley
almacena en caché las solicitudes usando como key
la URL
).
La adición de Requests
a RequestQueue
debe hacer desde MainThread
, ya que no tiene sentido llamarlas desde un Thread
fondo.
Me gustó un poco el framework Volley, pero todavía tengo algunas dudas al respecto.
Por ejemplo, ¿cómo se alinea Volley con el patrón del cargador? Ya que sus solicitudes se manejan de manera asíncrona, llamarlas en segundo plano no tiene mucho sentido. Por otro lado, si ignoramos el patrón del Cargador, cancelaremos la carga y recargaremos los recursos necesarios, es un desperdicio.
¿Cómo funciona Volley Framework con Loaders en Android?
Acabo de publicar un artículo sobre Volley y su integración en el proyecto sobre el patrón Loader. Se muestra enfoque avanzado. Los estados del cargador están completamente definidos y se muestran en el diagrama.
Artículo: https://plus.google.com/117981280628062796190/posts/8b9RmQvxudb
Es posible realizar solicitudes sincrónicas con Volley a través de la clase RequestFuture. No he investigado esto personalmente, pero parece que podrías aprovechar eso con un cargador para obtener lo mejor de ambos mundos (Volley''s Cache con la estabilidad de carga del cargador).
Un cargador puede encapsular prácticamente cualquier cosa, incluidas las solicitudes de Volley. Cuando su cargador encapsula un marco que ya maneja el trabajo en segundo plano para usted y le devuelve la llamada al hilo principal, como Volley, su implementación del cargador no debe heredar de AsyncTaskLoader
sino simplemente de la clase base del Loader
. Luego iniciará la solicitud de Volley en el método onForceLoad()
.
Cuando su cargador recupera el resultado en el subproceso principal a través de una devolución de llamada, solo necesita deliverResult()
a la Actividad / Fragmento llamando a deliverResult()
.
Su cargador también necesitaría mantener una referencia a la solicitud de Volley en curso para poder cancelarla en onStopLoading()
. onStopLoading () no se llama en el caso de un cambio de configuración como la rotación de la pantalla, solo cuando se abandona la Actividad.
La única desventaja es que los cargadores no tienen un mecanismo incorporado para propagar errores, mientras que Volley sí lo tiene. Por lo tanto, en su devolución de llamada de error de Volley dentro de su Cargador, deberá entregar un resultado nulo o enviar una transmisión local para notificar a la Actividad / Fragmento del error.