Episodio 175 – Domina estas tecnologías de concurrencia
Estoy muy contento de que Ricardo Markiewicz, antiguo compañero de trabajo y muy buen amigo, haya querido pasarse de nuevo por el podcast para hablarnos sobre CORRUTINAS + FLOW. ¡Ahí es nada!
Es un lujo poder contar de nuevo con él, es un mega crack. Explica conceptos complejos de una forma sencilla y clara.
Esta charla técnica se corresponde con el noveno topic. Es una charla bastante avanzada en la que vas a aprender un montón de cosas que te pueden servir para tu día a día como Android Developer.
Hablamos de:
- ¿Qué son las corrutinas?
- ¿Cuáles son sus ventajas frente a otras formas de concurrencia?
- ¿Qué es lo que podemos hacer mal cuando usamos corrutinas?
- Tipos de dispatchers y la cantidad de threads máximos en cada uno
- La diferencia entre LiveData y Flow
Y un montón de cosas más.
¡Por cierto, este topic tiene asociado el Audiocurso de Corrutinas + Flow! 🚀
¡Te veo dentro! 😉
¿Viste la última entrada sobre Android XR?
Link al último episodio de Ricardo
- Kotlin Multiplatform [TOPIC#2]
Links nombrados en la charla
Contenido del audio
Índice
00:00 | Previa
00:33 | Bienvenida y presentación
01:21 | Ricardo nos habla sobre él y su background
02:50 | ✔ ¿Por qué se debería quedar alguien a ver este episodio? ¿Qué va a aprender?
04:08 | 🤔 ¿Qué son las corrutinas? ¿Cuáles son sus ventajas frente a otras formas de concurrencia?
09:02 | ⚠ ¿Qué es lo que podemos hacer mal cuando usamos corrutinas?
14:08 | 🤯 ¿No deberíamos usar un IO Dispatcher cuando hacemos llamadas backend con Retrofit? Dialogando sobre ello.
17:55 | 👀 Los conceptos de: launch y async. ¿Cuál es la diferencia entre ambos? ¿Para qué se puede usar cada uno de ellos?
23:04 | 💡 Tipos de dispatchers y la cantidad de threads máximo en cada uno.
24:34 | ‼ ¿Con otras bibliotecas como KTOR, Ktorfit, KTOR Client pasaría lo mismo que con Retrofit?
25:17 | 🔍 ¿En qué situación se utilizaría un IO Dispatcher?
26:49 | 🛠 ¿Qué diferencia hay entre LiveData y Flow?
28:30 | 🥶 Corrutinas “en caliente” (Hot Flow) y “en frío” (Cold Flow). ¿Qué significa todo esto?
31:58 | 🛡️ Si quieres utilizar Flows con Room, ¿cuál sería una manera apropiada?
33:50 | 👁️ ¿Cómo inspeccionar o medir la performance de una app para mover procesos pesados y agilizar?
35:48 | ⚡ ¿Qué estrategia crees conveniente para evitar o al menos para ser conscientes de posibles memory leaks en nuestro código?
37:31 | 🧩 ¿Son mejores las corrutinas que RxJava? ¿Por qué?
39:23 | ❓ Si tenemos un ViewModel que tiene viewmodelscope.launch, pero no le pasamos un dispatcher. En los tests si no le pasamos un dispatcher y no podemos intercambiarlo. ¿Qué inconvenientes tendría esto?
41:03 | ❌ Resumen sobre CANCELACIÓN de corrutinas de forma eficiente
43:25 | 📱 Si desarrollo con dispositivo de gama media-alta, pero los usuarios tienen gama media-baja, ¿cómo enfocaríamos el desarrollo de la app para esos dispositivos con bajos recursos?
45:46 | 🕵🏻♂️ ¿Qué es eso de un CHANNEL?
46:37 | ✅ Recomendación a la hora de hacer TESTING de Flows
48:33 | 💪🏻 ¿Cuál ha sido el desafío más grande que te has encontrado trabajando con corrutinas, con flows?
50:33 | 📣 ¿Qué diferencia tendríamos al escuchar un StateFlow en un composable padre y uno hijo? ¿Algo a tener en cuenta?
52:52 | 🎒 A la hora de recolectar los flows, si se necesita hacer operaciones como mostrar un dialog en Compose, un Snackbar o cualquier otra cosa que no dependa de cambiar un dato del flow. ¿Se puede hacer uso del stateIn?
56:24 | 🧬 ¿Cómo ves la evolución a futuro de las corrutinas y flow?
57:34 | ¡Muchísimas gracias Ricardo! 😊
59:23 | 1️⃣ ¿Corrutinas o hilos tradicionales?
59:29 | 2️⃣ ¿Flow o LiveData?
59:36 | 3️⃣ ¿Qué operador de Flow usas más?
59:45 | 4️⃣ ¿Cuánto tiempo te tomó dominar las corrutinas?
59:54 | 5️⃣ ¿Qué es lo que más te gusta de Flow?
01:00:03 | 6️⃣ ¿Cuál fue el bug más raro que has tenido con corrutinas?
01:00:18 | 7️⃣ ¿Un truco poco conocido sobre corrutinas?
01:00:40 | 8️⃣ ¿Cuál ha sido el test más complicado que has escrito con corrutinas?
01:01:18 | 9️⃣ ¿Flow en la UI o en la capa de datos?
01:01:37 | 🔟 ¿RxJava o corrutinas?
01:01:49 | ¡Muchísimas gracias de nuevo Ricardo! 😊
01:02:05 | Agradecimientos y despedida
Transcripción
¡Muy buenas! Soy Gabi Moreno y te doy la bienvenida al episodio número 175 de Los androides.
El podcast en el que te damos herramientas para desatar tu potencial como Developer.
Un pacto de caballeros, CORRUTINAS más FLOW.
Topic número 9.
Y ojo con el episodio que tenemos hoy porque ahora mismo te voy a dar los motivos por los que te deberías de quedar si te interesa aprender un montón de conceptos que te van a valer en tu día a día, si eres Android Developer, por supuesto, de corrutinas más flow.
Porque vamos a hablar sobre qué son las corrutinas, cuáles son sus ventajas frente a otras formas de concurrencia, qué es lo que podemos hacer mal cuando usamos corrutinas, el tema de por qué no deberíamos utilizar un IO dispatcher cuando hacemos llamadas a backend con Retrofit.
Ojo, que esto yo no lo sabía y es muy interesante: conceptos de launch, async, tipos de dispatchers y la cantidad de threads máximos en cada uno.
También hablamos sobre temas de KMP, como por ejemplo utilizar Ktorfit y demás.
Super interesante la diferencia entre LiveData y Flow.
Todos estos conceptos de hot flows y cold flows, corrutinas en caliente, en frío, qué significa todo esto, qué pasa si queremos utilizar flows con run, cuál sería la manera apropiada, un montón de cosas, es una pasada.
Muy importante, cómo inspeccionar o medir el performance de una app a la hora de mover procesos pesados, agilizar, esto es bastante avanzado: estrategias para evitar que haya memory leaks en nuestras apps.
¿Por qué son mejores las corrutinas que RxJava o no?
Ya veremos, spoiler: sí que son mejores, al menos…