Flujos de Kotlin y LiveData.Como desarrollador moderno de Android… | Por Selim Simsek | Móvil | Mar 2022
Como desarrollador moderno de Android, es probable que nos hayamos encontrado con los términos LiveData y Flow en la mayoría de los proyectos. Entonces, ¿cuáles son las diferencias y similitudes entre ellos? Echemos un vistazo.
¿Qué es Live Data?
Los datos en tiempo real son una clase de soporte de datos observables. Es parte de los componentes de la arquitectura de Android, que es básicamente una colección de bibliotecas que lo ayudan a diseñar aplicaciones comprobables y mantenibles.
Cuando el componente que observa los datos se destruye o se vuelve inactivo, los datos en vivo dejan de transmitir datos a ese observador. Esto también elimina muchos problemas.
No tiene una forma genérica de manipular datos. Por eso usamos MutableLiveData, que se puede cambiar fuera de la clase ViewModel.
Ventajas de usar LiveData:
– sin pérdidas de memoria,
– sin bloqueos debido a la interrupción de la actividad,
– proporcionar oportunidades para compartir recursos,
– Permitir que la interfaz de usuario coincida con el estado de los datos,
– proporcionar siempre los datos más recientes,
– Proporcione los cambios de configuración apropiados.
Flujo (flujo frío) Nedir ?
El método utilizado para garantizar que dos rutinas se comuniquen a través del paso de mensajes se denomina canal. Channel crea un canal de comunicación que se puede suspender entre el emisor y el receptor. Una vez que se crean los canales, comienzan a funcionar sin consumidores y esperan a «pausarse» hasta que lleguen los consumidores. Debido a que funciona en este punto, los canalizadores están «calientes» en el sentido de que son recursos que se pueden producir sin ninguna solicitud.
Early RxJava se utilizó para programas asincrónicos. Luego, las corrutinas resuelven problemas comunes de una manera más compleja que Rxjava. Más tarde, las corrutinas se convirtieron en una forma mejor y más sencilla de procesar flujos de datos de forma asíncrona que se ejecutan secuencialmente con el flujo.
Livedata se utiliza para solucionar problemas del ciclo de vida y monitorear datos.
Por otro lado, los flujos de Kotlin se utilizan para la integración continua de datos y también simplifican enormemente la programación asíncrona.
StateFlow ve SharedFlow (flujo de calor) Nedir?
StateFlow (flujo de calor)
Es similar a LiveData, pero hecho por Kotlin usando flujos, la única diferencia en comparación con LiveData es que no admite ciclos de vida, pero esto también se puede resolver usando la API RepeatOnLifecycle, es decir, StateFlow puede hacer lo que hace LiveData.
SharedFlow (flujo de calor)
Como sugiere el nombre, indica que se comparte :), esta transmisión puede ser compartida por varios usuarios, es decir, si se solicita una recopilación múltiple en una transmisión compartida, a diferencia de lo normal, habrá una transmisión compartida entre todos los usuarios. .
En conclusión
Cuando usamos datos en vivo, si hay algún cambio en la base de datos, los datos en vivo permanecerán sin analizar.
Con Flow, es posible una perfecta integración de datos en toda la aplicación entre la base de datos y la interfaz de usuario sin necesidad de escribir ningún código adicional.
Se debe preferir el flujo en situaciones en las que habrá un flujo continuo de datos entre ViewModel y la interfaz de usuario.
El enfoque de Flow en la integración perfecta de datos tiene más sentido.
EK BİLGİ
Ni LiveData ni StateFlow mantienen el estado en reconstrucciones/rotaciones. Ese es el trabajo del ViewModel.
El propósito de LiveData/StateFlow es notificarle cuando cambia un valor, no verificar repetidamente los cambios.
Esto se llama modelo de observador, donde LiveData/StateFlow es el observable (contiene los valores que le interesan) y su actividad es el observador (el que maneja los cambios)
Además, si coloca LiveData/StateFlow en una actividad o fragmento en lugar de un ViewModel, el estado desaparecerá cuando se gire la pantalla.
proyecto
En el proyecto que hicimos con LiveData, StateFlow, Flow y SharedFlow, verificaremos que los datos se mantengan actualizados durante los cambios de pantalla. Cuál usaremos depende de nosotros dependiendo de dónde lo usemos aquí.
Si vamos a iniciar sesión como miembro, es razonable usar LiveData y StateFlow en situaciones en las que queremos que los usuarios conserven sus nombres de usuario y contraseñas.
Si queremos mostrar un mensaje al usuario, lo lógico es utilizar SharedFlow.
En el primer caso vemos todos los cambios.
Si la situación después de cambiar la pantalla es
Enlace de código:
Feliz codificación…