SlideShare una empresa de Scribd logo
Evolución Android
Del framework a la supervivencia del
más fuerte
1. Origen
2. Extinción
3. Evolución
Agenda
1. Origen
Rubén Serrano Núñez (@Akelael)
Lead Android Developer @RedboothHQ
Redbooth Beta Redbooth
WTF!
Creacionista
Evolucionista
¿Creacionistas
vs
Evolucionistas?
“It’s the maintenance!”
2. Extinción
All-in-one
Application
public class Application extends android.app.Application {

private static Gson gson;
private Map<Long, Integer> mRoles;
private Session mSession;
private File mCacheDir;
private NotificationManager mNotificationManager;
private int mNumberNotifications;
!
public static Session getSession() {

return instance.mSession;

}

public static String getGCMToken() {

AccountManager am = AccountManager.get(Application.getContext());

return am.getUserData(Application.getSession().getUser(),
AccountAuthenticator.GCM_TOKEN);

}



public static File getCacheDirectory() {

return instance.mCacheDir;

}
Lo puse todo en
Application y …
¡Quita eso de
ahí, guarro!
Ahora si, ahora no
Ahora si, ahora no:
Relative Layout
Ahora si, ahora no:
Enums vs Static Final Fields
Ahora si, ahora no:
ViewHolder
private static class ViewHolder {

public TextView textView;

public ImageView imageView;

}
!
@Override

public View getView(int position, View convertView, ViewGroup parent) {

View view = convertView;

ViewHolder viewHolder;

if (view == null) {

view = inflater.inflate(R.layout.item, parent, false);

viewHolder = new ViewHolder();

viewHolder.textView = (TextView) view.findViewById(R.id.text);

viewHolder.imageView = (ImageView) view.findViewById(R.id.image);

view.setTag(viewHolder);

}

viewHolder = (ViewHolder) view.getTag();

viewHolder.textView.setText("Random string");

viewHolder.imageView.setBackgroundColor(R.color.black);

return view;

}
ViewHolder
@Override

public View getView(int position, View convertView, ViewGroup parent) {

View view = convertView;

if (view == null) {

view = inflater.inflate(R.layout.item, parent, false);

}

((TextView) view.findViewById(R.id.text)).setText(“Random string");

((ImageView) view.findViewById(R.id.image)).setBackgroundColor(R.color.black);

return view;

}
No Holder
Ahora…
ActionBarCompat
Nested Fragments
Navigation drawer
Native Pull-to-Refresh
Si lo
recomienda
Juguemos…
• Descargar datos de un servidor
• Parser JSON
• Guardar datos en la BBDD
• Recuperar datos de la BBDD
• Mostrar datos en la pantalla
• Descargar datos de un servidor
• Parser JSON
• Guardar datos en la BBDD
• Recuperar datos de la BBDD
• Mostrar datos en la pantalla
Juguemos…
God Activity
startManagingCursor(Cursor c)
God Fragment
“Una Activity para gobernarlos a todos; una
Activity para encontrarlos; una Activity para
atraerlos a todos y atarlos a las tinieblas”	

- El Señor de los Fragments
SauronActivity
Clean code
vs
Lengua Oscura de
Mordor
AsyncTask
AsyncTask +
startManagingCursor
Loaders!
LoaderCallbacks<Cursor> callback = new LoaderCallbacks<Cursor>() {

@Override

public Loader<Cursor> onCreateLoader(int id, Bundle args) {

return new CursorLoader(context, uri, null, null, null, null);

}



@Override

public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
adapter.swapCursor(data);

}



@Override

public void onLoaderReset(Loader<Cursor> loader) {



}

};
LoaderCallbacks
ContentProvider
SyncAdapter
¿Cuándo?
3. Evolución
SOLID
Model View
Presenter
Unit testing
Test Driven
Development
Ports & Adapters
(Hexagonal
Architecture)
It is not the strongest of the species that
survives, nor the most intelligent, but
rather the one most adaptable to change.
Charles Darwin
It is not the strongest of the species that
survives, nor the most intelligent, but
rather the one most adaptable to change.
Charles Darwin
Espíritu crítico
Código mantenible
(y legible)
Remember!
¡Muchas gracias!
Q & A
Rubén Serrano Núñez
@Akelael
plus.google.com/+RubénSerrano

Más contenido relacionado

Similar a Evolución Android - DroidconMad 2014

LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
Alberto Ruibal
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
Marcos Reynoso
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
Adolfo Sanz De Diego
 
04. Implementando APIs HTML5
04. Implementando APIs HTML5 04. Implementando APIs HTML5
04. Implementando APIs HTML5
Danae Aguilar Guzmán
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
Pedro J. Molina
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
Pedro J. Molina
 
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de LeónAzure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
enriqueaguilar
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
Víctor Bolinches
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
Microsoft Argentina y Uruguay [Official Space]
 
MongoDB y bluemix
MongoDB y bluemixMongoDB y bluemix
MongoDB y bluemix
Victor Cuervo
 
Segunda sesion
Segunda sesionSegunda sesion
Segunda sesion
CRISTINAMARTINEZ232
 
De symfony 2013 dr. jenkins y mr. hyde - slides-842359017
De symfony 2013   dr. jenkins y mr. hyde - slides-842359017De symfony 2013   dr. jenkins y mr. hyde - slides-842359017
De symfony 2013 dr. jenkins y mr. hyde - slides-842359017Eduardo Gulias Davis
 
De symfony 2013 dr. jenkins y mr. hyde - slides
De symfony 2013   dr. jenkins y mr. hyde - slidesDe symfony 2013   dr. jenkins y mr. hyde - slides
De symfony 2013 dr. jenkins y mr. hyde - slidesQuique Torras
 
Aplicación móvil con acceso a datos
Aplicación móvil con acceso a datosAplicación móvil con acceso a datos
Aplicación móvil con acceso a datosSusi Perez Gallegos
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
Alejandro Mancilla
 
Proyecto de Grado
Proyecto de GradoProyecto de Grado
Proyecto de Grado
Pablo Zincarini
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
CloudAppi
 
Un atlas en la palma de la mano
Un atlas en la palma de la manoUn atlas en la palma de la mano
Un atlas en la palma de la mano
Jose Manuel Pereira Garcia
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
Manuel Carrasco Moñino
 

Similar a Evolución Android - DroidconMad 2014 (20)

LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
04. Implementando APIs HTML5
04. Implementando APIs HTML5 04. Implementando APIs HTML5
04. Implementando APIs HTML5
 
Clase
ClaseClase
Clase
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
 
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de LeónAzure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
 
MongoDB y bluemix
MongoDB y bluemixMongoDB y bluemix
MongoDB y bluemix
 
Segunda sesion
Segunda sesionSegunda sesion
Segunda sesion
 
De symfony 2013 dr. jenkins y mr. hyde - slides-842359017
De symfony 2013   dr. jenkins y mr. hyde - slides-842359017De symfony 2013   dr. jenkins y mr. hyde - slides-842359017
De symfony 2013 dr. jenkins y mr. hyde - slides-842359017
 
De symfony 2013 dr. jenkins y mr. hyde - slides
De symfony 2013   dr. jenkins y mr. hyde - slidesDe symfony 2013   dr. jenkins y mr. hyde - slides
De symfony 2013 dr. jenkins y mr. hyde - slides
 
Aplicación móvil con acceso a datos
Aplicación móvil con acceso a datosAplicación móvil con acceso a datos
Aplicación móvil con acceso a datos
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
 
Proyecto de Grado
Proyecto de GradoProyecto de Grado
Proyecto de Grado
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Un atlas en la palma de la mano
Un atlas en la palma de la manoUn atlas en la palma de la mano
Un atlas en la palma de la mano
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 

Último

Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptxTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
KatiuskaDominguez2
 
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdfPC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
JhenryHuisa1
 
Arquitectura de Sistema de Reservaciones
Arquitectura de Sistema de ReservacionesArquitectura de Sistema de Reservaciones
Arquitectura de Sistema de Reservaciones
AlanL15
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
eliersin13
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 

Último (6)

Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptxTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
 
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdfPC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
 
Arquitectura de Sistema de Reservaciones
Arquitectura de Sistema de ReservacionesArquitectura de Sistema de Reservaciones
Arquitectura de Sistema de Reservaciones
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 

Evolución Android - DroidconMad 2014