Android Volley + Loader patrón?

Me gustó bastante Volley marco, pero todavía tengo algunas dudas sobre él.

Por ejemplo, ¿cómo se alinean Volley con el patrón de Loader? Puesto que sus peticiones se manejan de una manera asíncrona, llamarla en fondo no tiene mucho sentido. Por otro lado, si ignoramos el patrón Loader, cancelaremos la carga y recargaremos los recursos necesarios, es un poco desperdicio.

¿Cómo funciona Volley framework con Loaders en Android?

Un Loader puede encapsular prácticamente cualquier cosa, incluyendo peticiones de Volley. Cuando tu Loader encapsula un marco que ya maneja el trabajo de fondo para ti y te llama de nuevo al hilo principal, como Volley, la implementación del cargador no debe heredar de AsyncTaskLoader sino simplemente de la clase base de Loader . A continuación, iniciar la solicitud Volley en el método onForceLoad() .

Cuando su cargador obtiene el resultado de nuevo en el hilo principal a través de una devolución de llamada, sólo tiene que empujar 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 caso de cambio de configuración como la rotación de la pantalla, sólo al salir de la actividad.

La única desventaja es que los cargadores no tienen un mecanismo incorporado para propagar errores, mientras que Volley lo hace. Por lo tanto, en su devolución de llamada de error de Volley dentro de su cargador, tendrá que entregar un resultado nulo o enviar una difusión local para notificar la actividad o el fragmento del error.

AFAIK y yo hemos visto en las fuentes, las respuestas a sus peticiones se almacenarán en caché, si el servidor envía los headers adecuados de almacenamiento en caché (ETag), y la segunda vez que intentará hacer una solicitud GET , a la misma url, usted será Siempre con una respuesta de la cache , en lugar de llamar a la Network nuevo. (Por defecto Volley cachés de las solicitudes utilizando como key la URL ).

La adición de Requests a RequestQueue debe realizarse desde MainThread , ya que no tiene sentido llamarlas desde un Thread fondo.

Acabo de publicar un artículo sobre Volley y su integración en el proyecto sobre el patrón de cargador. Se muestra un enfoque avanzado. Los estados del cargador están totalmente definidos y se muestran en el diagrama.

Artículo: https://plus.google.com/117981280628062796190/posts/8b9RmQvxudb

Diagrama de estados de carga

Es posible realizar solicitudes síncronas con Volley a través de la clase RequestFuture. No he mirado en esto personalmente, pero parece que usted podría aprovechar eso con un cargador para conseguir el mejor de ambos mundos (el escondrijo de Volley con la estabilidad de carga del cargador).

  • Java.lang.IllegalStateException: Fragmento no adjunto a la actividad
  • JSONArray respuesta con Volley para Android
  • Android - Llamadas de red asíncronas - Respuesta dependiente entre sí
  • Google Volley lib con los puntos finales de Appengine autenticados?
  • Autenticación de cuenta asíncrona con Volley
  • Volley y AsyncTask
  • Cómo obtener el código de estado en la respuesta correcta Volley Android
  • Android Volley, duplicado Set-Cookie se reemplaza
  • Excepción SSL cuando se utiliza Volley
  • Campos de encabezado de respuesta HTTP de Volley de acceso de Android
  • Manejo de respuestas con Volley
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.