Slide 1

Slide 1 text

Modern Android Development Facundo Rodríguez Arceri @facundomr

Slide 2

Slide 2 text

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 …

Slide 3

Slide 3 text

Android 10 Un poco de historia

Slide 4

Slide 4 text

Queso y dulce

Slide 5

Slide 5 text

Mi primer dispositivo Android

Slide 6

Slide 6 text

primer ide

Slide 7

Slide 7 text

Agenda • - Java vs Kotlin • - SDK vs librerías • - Arquitectura mobile • - Tareas asíncronas • - Layouts • - Bases de datos

Slide 8

Slide 8 text

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!

Slide 9

Slide 9 text

Kotlin: Lambdas

Slide 10

Slide 10 text

Kotlin: Extension Functions

Slide 11

Slide 11 text

Kotlin: Default & Named arguments

Slide 12

Slide 12 text

Kotlin: Null-safety

Slide 13

Slide 13 text

Kotlin ¡¡¡Una gran comunidad!!!

Slide 14

Slide 14 text

https://kotlin.gdg.com.ar

Slide 15

Slide 15 text

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! • -

Slide 16

Slide 16 text

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).

Slide 17

Slide 17 text

Arquitectura Mobile: MVP -

Slide 18

Slide 18 text

Arquitectura Mobile: MVVM -

Slide 19

Slide 19 text

Tareas asíncronas • - AsyncTask ‍♂ - Problemas con el lifecycle - Context leaks - Código repetitivo - - Alternativas - RxJava2 - Kotlin Coroutines

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

¿Preguntas?

Slide 23

Slide 23 text

¡Muchas gracias!

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Age of Mobile http://ageofmobile.tech