Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modern Android Development

Modern Android Development

Un resumen de qué cosas cambiaron en el desarrollo nativo para Android desde sus inicios, hace ya diez años, y qué cosas deberíamos estar aprendiendo para estar actualizados.

Facundo Rodríguez Arceri

August 31, 2019
Tweet

More Decks by Facundo Rodríguez Arceri

Other Decks in Programming

Transcript

  1. Un poco de historia Android Alpha Android Beta Android Cupcake

    Android Donut Android Eclair Android Froyo Android Gingerbread Android Honeycomb Android Ice Cream Sandwich Android Jellybean Android KitKat Android Lollipop Android Marshmallow Android Nougat Android Oreo Android Pie …
  2. Agenda • - Java vs Kotlin • - SDK vs

    librerías • - Arquitectura mobile • - Tareas asíncronas • - Layouts • - Bases de datos
  3. Java vs Kotlin • - Es difícil soportar nuevas versiones

    de Java para Android • • - Kotlin proporciona features modernos que tardan mucho en llegar a Java • • - Además proporciona interoperabilidad • • - O'Reilly Open Source Software Conference: Open Source Award for Breakout Project of the Year • • - ¡Kotlin first!
  4. SDK vs Librerías • - Gradle ❤ • • -

    Se decidió depender menos del SDK y tener cada vez más librerías (oficiales) • • - Librerías no-oficiales son standard de facto y ganan espacio en la documentación oficial • • - ¿Cómo se refactoriza un SDK vigente hace 10 años? • ¡Android KTX! • -
  5. Arquitectura Mobile • - ¿Por qué hace falta una arquitectura

    para desarrollar apps? - Acoplamiento - Activity Hell - Dificultad para escribir tests - Violación de principios de programación (SOLID, etc).
  6. Tareas asíncronas • - AsyncTask ‍♂ - Problemas con el

    lifecycle - Context leaks - Código repetitivo - - Alternativas - RxJava2 - Kotlin Coroutines
  7. Layouts • - Se fueron encontrando problemas de performance en

    algunos layouts muy populares - RelativeLayout ➡ ConstraintLayout - ListView / GridView ➡ RecyclerView - ViewPager ➡ RecyclerView / ViewPager2 - - Dificultad para lograr efectos y animaciones - - MotionLayout - - Lottie
  8. Bases de datos • - SQLiteOpenHelper y Cursor • -

    Los problemas se detectan en runtime • - Difícil de manejar versionado de tablas • - La asincronía debía manejarse en forma manual - - - Room ✨ - - Queries chequeadas en tiempo de compilación - - Anotaciones (@Entity, @Dao, @Query). - - Soporte para LiveData y Coroutines - - Migraciones sencillas - - No es necesario manejar Cursors a mano