SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Volley vs Retrofit
http://www.develup.com.ar @develUp_mobile
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
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
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
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
● 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
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
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
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
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
● 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
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
● 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
● 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
¿Preguntas?
¡¡¡Muchas gracias!!!
http://www.develup.com.ar @develUp_mobile

Más contenido relacionado

La actualidad más candente

La actualidad más candente (16)

Laravel 4.2 pdf
Laravel 4.2 pdfLaravel 4.2 pdf
Laravel 4.2 pdf
 
Como instalar tomcat_ubuntu
Como instalar tomcat_ubuntuComo instalar tomcat_ubuntu
Como instalar tomcat_ubuntu
 
Taller de optimizacion de servidores web tipo LAMP
Taller de optimizacion de servidores web tipo LAMPTaller de optimizacion de servidores web tipo LAMP
Taller de optimizacion de servidores web tipo LAMP
 
PHP
PHPPHP
PHP
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
JSP
JSPJSP
JSP
 
Desarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los ServletsDesarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los Servlets
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
Jsp(java server pages)
Jsp(java server pages)Jsp(java server pages)
Jsp(java server pages)
 
JSP
JSP JSP
JSP
 
Introducción a Ruby on rails
Introducción a Ruby on railsIntroducción a Ruby on rails
Introducción a Ruby on rails
 
Conociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio TalksConociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio Talks
 
Jsp
JspJsp
Jsp
 
Qué es jsp
Qué es jspQué es jsp
Qué es jsp
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Semana 1 Introducción a Java
Semana 1   Introducción a JavaSemana 1   Introducción a Java
Semana 1 Introducción a Java
 

Similar a Volley vs Retrofit

[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con JavaEudris Cabrera
 
Introducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaIntroducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaEudris Cabrera
 
Desarrolla tu primera api con spring boot
Desarrolla tu primera api con spring bootDesarrolla tu primera api con spring boot
Desarrolla tu primera api con spring bootCloudAppi
 
Introducción a Cake PHP Framework
Introducción a Cake PHP FrameworkIntroducción a Cake PHP Framework
Introducción a Cake PHP FrameworkJomicast
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the futureParadigma Digital
 
[ES] Introdución al desarrollo de aplicaciones web en java
[ES] Introdución al desarrollo de aplicaciones  web en java[ES] Introdución al desarrollo de aplicaciones  web en java
[ES] Introdución al desarrollo de aplicaciones web en javaEudris Cabrera
 
Consumo de web service con volley (api rest)
Consumo de web service con volley (api rest)Consumo de web service con volley (api rest)
Consumo de web service con volley (api rest)Diego Vasco
 
Cómo crear un RESTful API con Go
Cómo crear un RESTful API con GoCómo crear un RESTful API con Go
Cómo crear un RESTful API con GoSoftware Guru
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsFreelancer
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
 

Similar a Volley vs Retrofit (20)

[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 
Introducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaIntroducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en Java
 
Desarrolla tu primera api con spring boot
Desarrolla tu primera api con spring bootDesarrolla tu primera api con spring boot
Desarrolla tu primera api con spring boot
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Introducción a Cake PHP Framework
Introducción a Cake PHP FrameworkIntroducción a Cake PHP Framework
Introducción a Cake PHP Framework
 
SERVLET BASICS
SERVLET BASICSSERVLET BASICS
SERVLET BASICS
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Java servlet
Java servletJava servlet
Java servlet
 
[ES] Introdución al desarrollo de aplicaciones web en java
[ES] Introdución al desarrollo de aplicaciones  web en java[ES] Introdución al desarrollo de aplicaciones  web en java
[ES] Introdución al desarrollo de aplicaciones web en java
 
Consumo de web service con volley (api rest)
Consumo de web service con volley (api rest)Consumo de web service con volley (api rest)
Consumo de web service con volley (api rest)
 
Cómo crear un RESTful API con Go
Cómo crear un RESTful API con GoCómo crear un RESTful API con Go
Cómo crear un RESTful API con Go
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Manualcake
ManualcakeManualcake
Manualcake
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Java web 01 - servlets
Java web 01 - servletsJava web 01 - servlets
Java web 01 - servlets
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 

Último (16)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 

Volley vs Retrofit

  • 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