Volley vs Retrofit

16

Click here to load reader

Transcript of Volley vs Retrofit

Page 1: Volley vs Retrofit

Volley vs Retrofit

http://www.develup.com.ar @develUp_mobile

Page 2: Volley vs Retrofit

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

Page 3: Volley vs Retrofit

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

Page 4: Volley vs Retrofit

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

Page 5: Volley vs Retrofit

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

Page 6: Volley vs Retrofit

● 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

Page 7: Volley vs Retrofit

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

Page 8: Volley vs Retrofit

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

Page 9: Volley vs Retrofit

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

Page 10: Volley vs Retrofit

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

Page 11: Volley vs Retrofit

● 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

Page 12: Volley vs Retrofit

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

Page 13: Volley vs Retrofit

● 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

Page 14: Volley vs Retrofit

● 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

Page 15: Volley vs Retrofit

¿Preguntas?

Page 16: Volley vs Retrofit

¡¡¡Muchas gracias!!!

http://www.develup.com.ar @develUp_mobile