volley studio fast example descargar android android-networking android-volley

studio - volley android post



Volley y AsyncTask (4)

Cuando utilizas Volley, no hay necesidad de combinarlo con AsyncTask . Hace las cosas de redes en otro hilo para ti.

Here hay un ejemplo básico de una llamada de red usando Volley. Como puede ver, todo el código está solo en la Activity , sin necesidad de definir una AsyncTask .

Leí una publicación sobre Volley y sé que es una gran biblioteca de redes. Pero no pude entender una cosa.

Todas las solicitudes son Async Task o no?

Cuando quiero enviar una solicitud asyncTask usando Volley, ¿necesito poner la solicitud de Volley en AsyncTask? ¿o debería simplemente llamar a Volley Request si ya es una solicitud de AsyncTask?

private class MyClass extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { // do Volley request } }

¿Es este el enfoque correcto?


El objetivo de la introducción de la biblioteca de Volley fue asegurarse de que el usuario no tenga que preocuparse por todas las cosas "obvias" mientras envía una solicitud de red. Esto significa que voley se encarga de lo siguiente por sí mismo

  • Cambio de hilo de fondo
  • Disco transparente y respuesta de memoria
  • Múltiples conexiones de red simultáneas. etc

Para responder a su pregunta : no necesita preocuparse por cambiar al hilo de fondo , Volley se encarga de esto solo. Además, una vez que se completa la solicitud, se invoca la devolución de llamada correcta o fallida en el hilo principal. Por lo tanto, el desarrollador de Volley no tiene que preocuparse por cambiar los hilos.

Este tutorial here da una buena explicación paso a paso de Working with Volley Library


No necesita ejecutar la solicitud de Volly en una tarea asíncrona.

Por qué:

Gestionan todas las tareas relacionadas con la red en un hilo separado. Si observa detenidamente el proyecto de la biblioteca, no imaginó la tarea asíncrona. Pero ellos manejan inteligentemente todas las tareas relacionadas con la red de manera eficiente.

Compruebe la clase RequestQueue.java en el paquete principal de Volly

aquí estoy pegando el documento de Java.

/** * A request dispatch queue with a thread pool of dispatchers. * * Calling {@link #add(Request)} will enqueue the given Request for dispatch, * resolving from either cache or network on a worker thread, and then delivering * a parsed response on the main thread. */

Editado:

Formando una solicitud :

Con Volley, la comunicación de red es gestionada por RequestQueue. La mejor forma de utilizar el RequestQueue y todas sus herramientas, especialmente el caché, es instanciarlo una vez y mantenerlo como singleton. En este momento, puede agregar o cancelar solicitudes, detener o iniciar solicitudes, y acceder a la (s) caché (s) de respuesta.

RequestQueue queue =Volley.newRequestQueue(this);

Una vez que se haya instanciado RequestQueue, se debe formar una solicitud. Esto se puede hacer utilizando unas pocas clases de solicitud "listas para usar" diferentes incluidas en la Biblioteca Volley o extendiendo la clase de solicitud de Volley a su propia solicitud personalizada. Las clases de solicitud ya incluidas en Volley son una solicitud de cadena, solicitudes JSON y una solicitud de imagen. La mayoría de las clases de solicitud incluidas en la biblioteca de Volley utilizan constructores muy similares al siguiente.

Parámetros que se pasan al constructor:

RequestMethod (get, post, delete, ect) * JSONObject *: un objeto opcional que se publicará con su solicitud ResponseListener : dónde irán sus datos una vez completada la solicitud ErrorListener : qué se informará cuando haya un problema con su solicitud .

JsonObjectRequest request = JsonObjectRequest(Requestmethod, url, null, new ResponseListener(), new ErrorListener());

Listadores para recibir respuesta:

Exitoso oyente de respuesta

private class ResponseListener implements Response.Listener{ @Override public void onResponse(JSONObject response){ } }

Escucha de respuesta de error

private class ErrorListener implements Response.ErrorListener{ @Override public void onErrorResponse(VolleyError error){ } }

Finalmente, agregue su solicitud a la cola de solicitud, el resto de cada uno de los volly se encargará de usted.

Hacer llamadas:

Ahora que hemos realizado nuestras clases de solicitud y respuesta, estamos listos para agregar la solicitud a la cola y recuperar los datos. Para hacerlo, simplemente agregamos la solicitud a la cola.

queue.add(request);

La respuesta o error se enviará a las clases de respuesta / error que definimos en nuestra solicitud. Puede agregar tantas solicitudes a la cola que quiera al mismo tiempo y las respuestas se entregarán a sus respectivas clases de respuesta / error


Volley no se puede insertar dentro de AsyncTask porque,

Volley está iniciando thread (s) de fondo por sí mismo, por lo que todas las solicitudes de red se ejecutan fuera del subproceso de interfaz de usuario, por lo que, en primer lugar, ya no necesita extender AsyncTask. Por supuesto, deberás tener cuidado de cancelar las solicitudes en rotación o cuando el usuario salga de tu actividad. Como Volley se usa principalmente para propósitos menores de redes en Android (para un uso mayor DownloadManager). Hace un funcionamiento similar de AsyncTask Class. Implementar Singleton en Volley. Las imágenes también pueden enviarse en Volley.