2. Introducción
● Hasta hace un tiempo, los desarrolladores nos veíamos
obligados a escribir AsyncTasks para realizar requests desde
las apps.
● La adopción de Gradle impulsó el desarrollo de librerías.
● ¿Cómo elegir una entre tantas alternativas disponibles?
2/15
3. Características de Volley
● Librería para hacer requests HTTP de forma sencilla.
● Los Requests se crean y llevan callbacks de éxito y error
asignadas, para manejar su resultado.
● Al terminar la ejecución de un Request, se llama a la
callback correspondiente: Response.Listener o Response.
ErrorListener.
3/15
4. Uso básico
● Un Request se crea a partir de la descripción de lo que
representa en HTTP: URL, Método HTTP, request body.
● Una vez creado el Request, se agrega a una Queue.
● Los Request se van ejecutando a medida que se agregan a la
Queue.
● Se puede cancelar un Request en particular o la Queue
completa.
4/15
5. En la práctica
● Singleton Queue en lugar de Activity Queue.
● Request propio en lugar de JSONObjectRequest.
● Política de reintentos
● Timeout
● Número de intentos
● Backoff multiplier
● Necesidad de sobreescribir métodos para cambiar Headers del
Request o agregar Form Params. 5/15
6. ● En Volley, las callbacks de éxito y error son
implementaciones de clases diferentes: ResponseListener y
ResponseErrorListener.
● Toda respuesta no exitosa ejecutará el
ResponseErrorListener.
Manejo de callbacks
6/15
7. Características de Retrofit
● Librería para mapear la interface de una API REST a una
clase Java
● Los Request pueden hacerse en forma similar a Volley, con
callbacks asincrónicas.
● Es altamente configurable: cliente HTTP, librería de
conversión de objetos, etc.
7/15
8. Uso básico
● En primer lugar hay que mapear nuestros endpoints en una
interface Java, utilizando annotations.
● Luego, en nuestra clase, configuramos Retrofit y creamos
una instancia de nuestra interface, a partir del método
create(Class interface).
● Al ejecutar los llamados a la API recibimos el objeto Call,
al cual podemos ejecutarle execute() o enqueue(Callback),
según querramos hacerlo sincrónico o asincrónico.
8/15
9. En la práctica
● Además de la dependencia de Retrofit, es necesario tener
por lo menos una dependencia a un Converter deseado (GSON,
Jackson, Simple XML, etc).
● Cuidado: las URL pueden ser absolutas o relativas, a no
desesperarse si tenemos un 404 Not Found.
● GsonConverterFactory.create() puede recibir una instancia
de Gson.
9/15
10. En la práctica
● Existe la posibilidad de proveer un OkHttpClient
configurado por nosotros.
● Para utilizar una URL que no esté en nuestra API, hay que
declarar la URL completa en el servicio: @POST(“http:
//otraUrl.com/endpoint”).
10/15
11. ● En Retrofit, un único objeto Callback tiene los métodos
onResponse() y onFailure()
● A pesar de ocurrir un error, como por ejemplo 404 Not
Found, de todas maneras se ejecuta onResponse(), en donde
hay que manejar el error evaluando que response.body() no
sea null.
● Además, es necesario capturar una posible IOException.
Manejo de callbacks
11/15
12. Comparativa final
● Volley sirve simplemente para hacer requests, mientras que
Retrofit es una herramienta más completa para manejar
llamados a una API.
● Volley es un producto de Google, sin embargo no tiene una
dependencia Gradle oficial (existe un Mirror que sincroniza
automáticamente el repositorio oficial).
● Volley está listo para usarse apenas se incluye, Retrofit
requiere algunas configuraciones iniciales.
12/15
13. ● El manejo de headers y parámetros es más sencillo en
Retrofit (annotations), y más engorroso en Volley
(HashMap<String, String>).
● Volley permite obtener una respuesta cacheada de un request
anterior, utilizando la url como clave, en el método queue.
getCache().get(url), así como limpiar el cache con queue.
getCache().clear(), o queue.getCache().remove(url). Retrofit
no ofrece control sobre esto.
Comparativa final
13/15
14. ● Retrofit obliga a capturar una IOException y hacer un
nullcheck sobre respuestas que, a priori, parecen exitosas.
Volley resulta más intuitivo en este punto.
● En cuanto a performance, hay que tener cuidado con lo que
se está comparando.
Comparativa final
14/15