Tras el anuncio de la salida de Android Studio 2.0, ya escribimos un post sobre las novedades que éste incluía y cómo iba a afectar en su día a día a los desarrolladores. Hoy queremos centrar la atención en una de las novedades más llamativas a nivel de desarrollo: el Data Binding. Para ello, hemos pedido a nuestro SlashTeam de Android su opinión y esto es lo que nos han contado.
Pongámonos en antecedentes
Desde el inicio de los tiempos (bueno, desde que se lanzó Android allá por 2008), miles de desarrolladores nos hemos adentrado en las profundas y oscuras aguas de su SDK en busca del conocimiento necesario para desarrollar aplicaciones estables, escalables y eficientes. Cuando comienzas a bucear en estas aguas, una de las primeras cosas que aprendes es cómo modificar una vista desde el código de nuestra activity. Para ello, se nos presenta el que debe ser uno de los métodos más utilizados en Android, el tristemente célebre findViewById(int id). Gracias a este método podíamos localizar una vista en nuestro Layout asociado a una Activity y modificarla con los valores que creyéramos convenientes en cada momento. Durante años, los developers leímos y probamos en nuestras carnes mil y una veces las maldades de este método; lo ineficiente que es cuando hay vistas con varios niveles de jerarquía o lo absurdo de tener que escribir diez líneas de código para obtener referencias a diez componentes de nuestra vista. Por suerte ¡estos tiempos quedaron atrás (al menos para algunos de nosotros)! Así, en marzo de 2013 el archiconocido Jake Wharton lanzaba la primera release de su librería Butter Knife. Esta nos permite, mediante simples anotaciones, enlazar los componentes de nuestra vista con variables de nuestra actividad, poniendo fin así al reinado de findViewById(int id). Esto no acaba aquí, como ya hemos comentado, hace unos meses Google anunció el lanzamiento de Android Studio 2.0 y con éste el de una característica conocida como Data Binding. Dicho en otras palabras: una solución definitiva y que no depende de librerías de terceros al problema del enlazado de las vistas en Android.
¿En qué consiste el Data Binding?
Si habéis desarrollado alguna vez para dispositivos iOS/Mac, este concepto os resultará familiar, ya que es similar a los IBOutlet e IBAction que se utilizan en estas plataformas. La idea detrás de Data Binding es proporcionar al desarrollador una conexión bidireccional entre una vista y una variable, de forma que cuando se modifique una de las dos, la otra también lo haga. Es a partir de esta sencilla idea que se desarrolla el concepto de Data Binding y se amplía de forma que a día de hoy (recordemos que aún se encuentra en fase beta), se pueden enlazar tanto variables como eventos asociados a las vistas (sí, habéis leído bien, ¡También diremos adiós al onClick(View v)!). Además, también:
Se proporciona un lenguaje de expresión que permite la modificación de los valores de dichas variables
Se incluyen operadores condicionales y el operador ‘??’ para evitar NullPointerException
Se hace hincapié en el uso del patrón Observer para terminar de cerrar el círculo alrededor de esta nueva característica
Pero no es oro todo lo que reluce…
Y es que, si ya era complicado mantener una arquitectura limpia y ordenada en nuestras aplicaciones Android debido al anti-patrón GodObject que se nos impone a los desarrolladores al tener que construir nuestras aplicaciones en base a Activities, el hecho de contar con una comunicación bidireccional entre la vista y la actividad redunda en un acoplamiento más fuerte entre estos dos componentes. Esto añade un grado adicional de dificultad a la hora de mantener la independencia entre los distintos componentes y módulos de nuestra aplicación.
A pesar de los pros y los contras de esta nueva funcionalidad, sólo el tiempo dirá si logra imponerse como una alternativa sólida a findViewById(int id)/Butter Knife o se queda en el cajón desastre de Google siendo usada únicamente por los curiosos y los locos que buscan nuevos retos. ¿De cuáles sois vosotros?
No te estamos pidiendo matrimonio, solo que aceptes nuestras cookies. Con ello podremos analizar de forma ANÓNIMA y ESTADÍSTICA el uso que haces de la web para mejorar los contenidos y tu experiencia de navegación. Y te juramos que no, nunca jamás, usaremos esta información de manera fraudulenta ni para venderte nada. Puedes echar un vistazo a nuestra Política de cookies aquí: Política de cookiesACEPTOConfigurar cookiesRechazo
Política de Cookies
Resumen de privacidad
Este sitio web utiliza cookies para mejorar su experiencia mientras navega por el sitio web. Fuera de estas cookies, las cookies que se clasifican como necesarias se almacenan en su navegador, ya que son esenciales para el funcionamiento de las funcionalidades básicas del sitio web. También utilizamos cookies de terceros que nos ayudan a analizar y comprender cómo utiliza este sitio web. Estas cookies se almacenarán en su navegador solo con su consentimiento. También tiene la opción de optar por no recibir estas cookies. Pero la exclusión voluntaria de algunas de estas cookies puede afectar su experiencia de navegación.
Las cookies necesarias son absolutamente esenciales para que el sitio web funcione correctamente. Esta categoría solo incluye cookies que garantizan funcionalidades básicas y características de seguridad del sitio web. Estas cookies no almacenan ninguna información personal.
Cookie
Tipo
Duración
Descripción
cookielawinfo-checkbox-necessary
0
11 meses
Esta cookie está configurada por el complemento de consentimiento de cookies de GDPR. Las cookies se utilizan para almacenar el consentimiento del usuario para las cookies en la categoría "Necesarias".
cookielawinfo-checkbox-non-necessary
0
11 meses
Esta cookie está configurada por el complemento de consentimiento de cookies de GDPR. Las cookies se utilizan para almacenar el consentimiento del usuario para las cookies en la categoría "No necesarias".
csrftoken
0
11 meses
Esta cookie está asociada con la plataforma de desarrollo web Django para Python. Se utiliza para ayudar a proteger el sitio web contra ataques de falsificación de solicitudes entre sitios.
JSESSIONID
1
Utilizado por sitios escritos en JSP. Cookies de sesión de plataforma de propósito general que se utilizan para mantener el estado de los usuarios en las solicitudes de página.
PHPSESSID
0
Esta cookie es nativa de las aplicaciones PHP. La cookie se utiliza para almacenar e identificar la identificación de sesión única de un usuario con el fin de administrar la sesión del usuario en el sitio web. La cookie es una cookie de sesión y se elimina cuando se cierran todas las ventanas del navegador.
viewed_cookie_policy
0
11 meses
La cookie está configurada por el complemento de consentimiento de cookies de GDPR y se utiliza para almacenar si el usuario ha dado su consentimiento o no para el uso de cookies. No almacena ningún dato personal.
Las cookies que pueden no ser particularmente necesarias para el funcionamiento del sitio web y que se utilizan específicamente para recopilar datos personales del usuario a través de análisis, anuncios y otros contenidos integrados se denominan cookies no necesarias. Es obligatorio obtener el consentimiento del usuario antes de ejecutar estas cookies en su sitio web.
Cookie
Tipo
Duración
Descripción
__putma
0
19 years
_dc_gtm_UA-7007193-1
0
1 minute
_dc_gtm_UA-7007193-5
0
1 minute
_gcl_au
0
3 months
_pin_unauth
0
1 year
_ptref
0
1 day
_sotmpid
0
2 years
_sotmsid
0
30 minutes
_uetsid
0
1 day
_uetvid
0
2 weeks
_uv_id
0
2 years
AMCV_0D3C2C1653DB264C0A490D4B%40AdobeOrg
0
2 years
AMCVS_0D3C2C1653DB264C0A490D4B%40AdobeOrg
0
bscookie
1
2 years
c72887300d
0
glassbox-session-id
0
30 minutes
kng_aflow
0
1 year
language
0
li_sugr
0
2 meses
Utilizada por LinkedIn para rastrear el uso de servicios embebidos. El objetivo principal de esta cookie es: Targeting/Publicidad.
lissc
0
1 año
Se utiliza para garantizar que el atributo SameSite es correcto para todas las cookies en dicho navegador
S
1
1 hour
sc_anonymous_id
0
9 years
test_cookie
0
11 months
u
0
3 months
UIDR
0
1 año
Esta cookie se establece en scorecardresearch.com. La cookie se utiliza para rastrear la actividad de los usuarios en Internet en el navegador, como la marca de tiempo de la visita, la dirección IP y las páginas web visitadas más recientemente. y que los datos se envíen a terceros para su análisis y generación de informes para ayudar a sus clientes a comprender mejor las preferencias de los usuarios.
Las cookies analíticas se utilizan para comprender cómo los visitantes interactúan con el sitio web. Estas cookies ayudan a proporcionar información sobre métricas, número de visitantes, tasa de rebote, fuente de tráfico, etc.
Cookie
Tipo
Duración
Descripción
_ga
0
2 años
Esta cookie es instalada por Google Analytics. La cookie se utiliza para calcular los datos de visitantes, sesiones, campañas y realizar un seguimiento del uso del sitio para el informe de análisis del sitio. Las cookies almacenan información de forma anónima y asignan un número generado aleatoriamente para identificar visitantes únicos.
_gid
0
1 día
Esta cookie es instalada por Google Analytics. La cookie se utiliza para almacenar información sobre cómo los visitantes usan un sitio web y ayuda a crear un informe analítico de cómo está funcionando el sitio web. Los datos recopilados, incluido el número de visitantes, la fuente de donde provienen y las páginas aparecen de forma anónima, identifican a un visitante único en todos los dominios.
demdex
0
5 meses
Esta cookie se establece en el dominio demdex.net y es utilizada por Adobe Audience Manager para ayudar a identificar un visitante único en todos los dominios.
GPS
0
30 minutos
Youtube establece esta cookie y registra una identificación única para rastrear a los usuarios según su ubicación geográfica.
MR
0
1 semana
Esta cookie se utiliza para medir el uso del sitio web con fines analíticos.
pardot
0
La cookie se establece cuando el visitante inicia sesión como usuario de Pardot.
s_nr
0
4 semanas
Adobe Analytics establece esta cookie con el fin de almacenar las fechas en las que los usuarios visitan el sitio web y si el usuario es o no un visitante nuevo o recurrente.
Las cookies de rendimiento se utilizan para comprender y analizar los índices de rendimiento clave del sitio web, lo que ayuda a brindar una mejor experiencia de usuario a los visitantes.
Cookie
Tipo
Duración
Descripción
__utma
0
2 años
Esta cookie es establecida por Google Analytics y se utiliza para distinguir usuarios y sesiones. La cookie se crea cuando se ejecuta la biblioteca JavaScript y no existen cookies __utma. La cookie se actualiza cada vez que se envían datos a Google Analytics.
__utmb
0
30 minutos
Google Analytics establece la cookie. La cookie se utiliza para determinar nuevas sesiones / visitas. La cookie se crea cuando se ejecuta la biblioteca JavaScript y no existen cookies __utma. La cookie se actualiza cada vez que se envían datos a Google Analytics.
__utmc
0
Google Analytics establece la cookie y se elimina cuando el usuario cierra el navegador. La cookie no es utilizada por ga.js. La cookie se utiliza para permitir la interoperabilidad con urchin.js, que es una versión anterior de Google Analytics y se utiliza junto con la cookie __utmb para determinar nuevas sesiones / visitas.
__utmt
0
10 minutes
Google Analytics establece la cookie y se utiliza para reducir la tasa de solicitud.
__utmz
0
6 meses
Google Analytics establece esta cookie y se utiliza para almacenar la fuente de tráfico o la campaña a través de la cual el visitante llegó a su sitio.
_gat
0
1 minuto
Google Universal Analytics instala estas cookies para acelerar la tasa de solicitud y limitar la recopilación de datos en sitios de alto tráfico.
YSC
1
Estas cookies son establecidas por Youtube y se utilizan para rastrear las vistas de videos incrustados.
Las cookies publicitarias se utilizan para proporcionar a los visitantes anuncios y campañas de marketing relevantes. Estas cookies rastrean a los visitantes en los sitios web y recopilan información para proporcionar anuncios personalizados.
Cookie
Tipo
Duración
Descripción
_fbp
0
3 meses
Facebook configura esta cookie para enviar publicidad cuando están en Facebook o en una plataforma digital impulsada por publicidad de Facebook después de visitar este sitio web.
ATN
1
2 años
La cookie es establecida por atdmt.com. Las cookies almacenan datos sobre el comportamiento del usuario en varios sitios web. Luego, los datos se utilizan para ofrecer anuncios relevantes a los usuarios en el sitio web.
dpm
0
5 meses
La cookie es establecida por demdex.net. Esta cookie asigna una identificación única a cada usuario visitante que permite a los anunciantes externos dirigirse a esos usuarios con anuncios relevantes.
everest_g_v2
0
2 años
La cookie se establece en el dominio eversttech.net. El propósito de la cookie es asignar clics a otros eventos en el sitio web del cliente.
everest_session_v2
0
Esta cookie se utiliza para mostrar anuncios personalizados y relevantes a los usuarios y medir la eficiencia de la campaña publicitaria.
fr
1
3 meses
Facebook configura la cookie para mostrar anuncios relevantes a los usuarios y medir y mejorar los anuncios. La cookie también rastrea el comportamiento del usuario en la web en sitios que tienen píxeles de Facebook o complementos sociales de Facebook.
IDE
1
2 años
Utilizado por Google DoubleClick y almacena información sobre cómo el usuario utiliza el sitio web y cualquier otro anuncio antes de visitar el sitio web. Se utiliza para presentar a los usuarios anuncios que son relevantes para ellos de acuerdo con el perfil del usuario.
MUID
0
1 año
Usado por Microsoft como identificador único. La cookie se establece mediante scripts integrados de Microsoft. El propósito de esta cookie es sincronizar la identificación en muchos dominios de Microsoft diferentes para permitir el seguimiento de usuarios.
NID
1
6 meses
Esta cookie se utiliza para crear un perfil en función del interés del usuario y mostrar anuncios personalizados a los usuarios.
uid
0
1 año
Esta cookie se utiliza para medir el número y el comportamiento de los visitantes del sitio web de forma anónima. Los datos incluyen el número de visitas, la duración media de la visita en el sitio web, las páginas visitadas, etc. con el fin de comprender mejor las preferencias del usuario para los anuncios dirigidos.
VISITOR_INFO1_LIVE
1
5 meses
Youtube establece esta cookie. Se utiliza para rastrear la información de los videos de YouTube incrustados en un sitio web.
Las cookies funcionales ayudan a realizar ciertas funcionalidades como compartir el contenido del sitio web en plataformas de redes sociales, recopilar comentarios y otras características de terceros.
Cookie
Tipo
Duración
Descripción
bcookie
0
2 años
Esta cookie es establecida por linkedIn. El propósito de la cookie es habilitar las funcionalidades de LinkedIn en la página.
lidc
0
1 día
LinkedIn establece esta cookie y la utiliza para el enrutamiento.
s_cc
0
Adobe Analytics establece esta cookie. El propósito de la cookie es determinar si las cookies están habilitadas o no en un navegador.
Las cookies de preferencia se utilizan para almacenar las preferencias del usuario para proporcionar contenido personalizado y conveniente para los usuarios, como el idioma del sitio web o la ubicación del visitante.
Cookie
Tipo
Duración
Descripción
_gat_UA-2156578-3
0
1 minuto
Esta es una cookie de tipo patrón establecida por Google Analytics, donde el elemento de patrón en el nombre contiene el número de identidad único de la cuenta o sitio web con el que se relaciona. Parece ser una variación de la cookie _gat que se utiliza para limitar la cantidad de datos registrados por Google en sitios web de alto volumen de tráfico.
lang
0
Esta cookie se utiliza para almacenar las preferencias de idioma de un usuario para ofrecer contenido en ese idioma almacenado la próxima vez que el usuario visite el sitio web.