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.
- Error de Stackoverflow de JsonObject Build
- Volley JsonObjectRequest Post parámetros ya no funcionan
- Android: solicitud de revisión de Volley HTTP
- Volley JSONException: Fin de la entrada en el carácter 0 de
- Volley Bug: Repetición de una solicitud cuando el registro detallado está habilitado falla
¿Cómo funciona Volley framework con Loaders en Android?
- recibir variable booleana con solicitud json en volley
- Solicitud de parche Android Volley
- Enviando una solicitud POST con JSONArray usando Volley
- Publicar Método utilizando Volley no funciona
- Volley RequestQueue Tiempo de espera
- Volley NoConnectionError: tlsv1 alert fallback inapropiado
- Volley Android, cómo pasar post parámetros de forma dinámica
- Android Volley Null Pointer Exception
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
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).
- Calcular el tamaño del texto según el ancho del área de texto
- El usuario no es elegible para esta compra: en la facturación de la aplicación