¿Android realmente recomienda usar el modo MVI? ¿Cuál es la diferencia entre MVI y MVVM?
¿Android se enrolla y crea su propio modelo de arquitectura MVI?
¿El modelo de arquitectura MVI fue creado por desarrolladores nacionales de Android en el último año o dos?
Leí mucha información sobre MVI y descubrí que se mencionaba el marco Cycle.js. La arquitectura mvi de Android está inspirada en el marco Cycle.js.
Echemos un vistazo a cuándo se inició el marco Cycle.js y cuándo empezó a utilizar el patrón MVI.
La primera versión preliminar del marco Cycle.js:
/cyclejs/cyclejs/releases?page=6
Basado en la documentación oficial, Cycle El marco .js nació para el patrón de arquitectura MVI.
Aunque no sé si el framework Cycle.js es el primer framework de patrón MVI.
Sin embargo, a partir de mucha información se puede inferir que el patrón de arquitectura MVI fue popularizado por el marco Cycle.js.
Y se ha utilizado ampliamente en el desarrollo front-end desde 2014.
Piensa en 2014, ¿qué estamos haciendo? ¿Qué patrón arquitectónico está usando Android?
Como dice el refrán, las artes marciales del mundo provienen de Shaolin.
Muchas de nuestras tecnologías Android han sido durante mucho tiempo "malas" en el front-end.
Sabemos que los padres de MVP y MVVM son ambos MVC. El padre de MVI también es MVC.
El controlador de MVC es un componente de comando y programación y no puede implementar directamente ideas de programación receptivas.
Paradigma de programación reactiva (programación reactiva):
El marco de redacción oficial de Android, el subprograma WeChat, Flutter, React y los marcos de desarrollo de UI de Hongmeng utilizan marcos de desarrollo reactivo.
No lo ampliaré aquí. Siempre que tenga una comprensión básica de cualquiera de los marcos de desarrollo mencionados anteriormente, podrá comprender el paradigma de programación reactiva.
No importa si no conoces ninguno de ellos, no importa si no comprendes la programación reactiva ahora. Lo entenderás cuando aprendas MVI. profundamente comprendido después del uso real.
No importa si no puedes aprenderlo, no te preocupes (sobre todo aquellos que llevan poco tiempo trabajando, es normal no aprenderlo~)
MVI, si no podemos aprenderlo la primera vez, simplemente espere 2 años y vuelva a aprender ~
Si aún no lo ha aprendido después de 2 años, espere otros 2 años ~ Debes tener paciencia~
Si aún no puedes aprenderlo, no importa, porque MVI quedará obsoleto tarde o temprano~ No hay necesidad de aprenderlo cuando quede obsoleto~ <. /p>
Jajaja~ No te rías, los androides serios no bromean.
Al igual que rxjava, ¿cuántas personas no pudieron aprenderlo en ese entonces? ¿Quién todavía aprende Rxjava en el desarrollo de Android? Jajaja ~
Utilice una imagen para resumir la idea central de esta actualización:
Basado en la versión anterior, la nueva versión de la guía de arquitectura ha realizado los siguientes ajustes y sugerencias :
1. Cambie el componente LiveData a StateFlow
Es más amigable para el uso de corrutinas. Y puede reflejar mejor la idea del desarrollo del flujo de datos.
De hecho, no hay nada de malo en seguir usando LiveData.
2. Los datos pasados por ViewModel a View se limitan al UIState de View
Después de que ViewModel obtiene los datos de la capa Modelo, los convierte en datos UIState y fluye hacia la capa Modelo. Ver capa a través de StateFlow.
Los datos UIState se definen para los componentes de la interfaz y son datos que pueden controlar directamente cómo se muestran los componentes de la Vista.
Entonces también podemos llamar a UIState el estado de la interfaz o el estado de la Vista.
De la siguiente manera:
3. Elección entre flujo de datos único o múltiples flujos de datos
Las pautas oficiales no nos obligan a utilizar un flujo único.
Si la misma interfaz debe utilizar un único StateFlow o varios StateFlows requiere nuestro propio criterio.
Deberíamos decidir entre flujo múltiple o flujo único en función del grado de correlación entre los datos de UIStates.
Las ventajas y desventajas del flujo único son muy obvias:
Ventajas: la gestión y el control centralizados de los datos mejorarán la legibilidad del código y la conveniencia de modificarlo.
Desventajas: cuando los datos son muy grandes y complejos, afectará la eficiencia. Debido a que no tenemos una función de diferenciación, la capa de Vista no solo puede actualizar los datos modificados, sino que solo actualizará la interfaz actual según UIState.
/jetpack/guide/ui-layer#additional-considerations
Echemos un vistazo a la nueva versión oficial del diagrama de arquitectura:
Por supuesto, No solo MVVM se puede transformar en responsive. También es posible adoptar el paradigma de desarrollo tradicional y MVP.
Si no me crees, lee este blog:
/817602-mvi-architecture-for-android-tutorial-getting-started
1 Comprender el patrón de arquitectura MVC MVC es el padre de otros patrones arquitectónicos. Su pensamiento es la base de MVP, MVVM y MVI.
3. Aprenda el uso del componente StateFlow de Kotlin: Sequence->Flow->StateFlow.
4. Aprenda el uso de los componentes de ViewModel (aunque la arquitectura MVI se puede implementar sin ViewModel, aún vale la pena aprender ViewModel).
5. Comprenda el principio DRY (No se repita).
6. Comprenda MVVM (porque el modelo oficial MVI se basa en la transformación básica de MVVM ~).
7. Estudia la guía oficial de arquitectura.
8. Combate real.
Aquí compartiré un PDF de aprendizaje + video de arquitectura + documento de entrevista + notas de código fuente recopiladas y compiladas por el propio jefe, mapa mental avanzado de tecnología de arquitectura avanzada, materiales especiales de entrevistas de desarrollo de Android, materiales de arquitectura avanzada avanzada
Estos son materiales excelentes que todavía leo una y otra vez en mi tiempo libre. Tiene explicaciones detalladas de puntos de conocimiento de alta frecuencia en entrevistas con empresas importantes en los últimos años. Creo que puede ayudar eficazmente a todos a dominar el conocimiento, comprender los principios y ayudar a todos a obtener una buena respuesta en el futuro.
Por supuesto, también puedes utilizarlo para comprobar si hay fugas y rellenar huecos para mejorar tu competitividad.
Espero sinceramente que pueda ayudar a todos, Android tiene un largo camino por delante, ***¡ánimo!
Si lo necesitas, envíame un mensaje privado para recibirlo