Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Cuáles son las principales diferencias entre mvvmcross 4.x y 3.x con respecto al ciclo de vida de viewmodel


¿Cuáles son las principales diferencias entre mvvmcross 4.x y 3.x con respecto al ciclo de vida de viewmodel


Las versiones MVVMCross 3.x y 4.x tienen varias diferencias con respecto al ciclo de vida de ViewModel, centrados principalmente en cómo se construyen, inicializan y gestionan los modelos de vista.

mvvmcross 3.x

En MVVMCross 3.x, el ciclo de vida ViewModel sigue una secuencia conocida como CIRS: Construction, Init (), ReloadState () y Start (). Esta secuencia se usa para inicializar y administrar ViewModels. Aquí hay un desglose:

- Construcción: el Modelo View se instancia utilizando el contenedor IOC, lo que permite la inyección de dependencia. Aquí es donde los servicios y otras dependencias se inyectan en el modelado View.
- init (): este método se utiliza para inicializar los parámetros de navegación. Se llama después de la construcción y es donde normalmente configuraría los datos o parámetros iniciales pasados ​​al Modelo View.
- ReloadState (): este método es responsable de rehidratar el estado de ViewModel después de la tumba, que ocurre cuando la aplicación se suspende y luego se reanuda debido a las bajas condiciones de memoria.
- Start (): este método se llama cuando se completan la inicialización y la rehidratación. Por lo general, se usa para iniciar operaciones o tareas continuas.

mvvmcross 4.x

MVVMCross 4.x continúa utilizando la secuencia CIRS pero introduce algunos cambios y mejoras:

- La construcción sigue siendo la misma, usando el COI para la inyección de dependencia.
- Init () todavía inicializa los parámetros de navegación, pero ahora es más flexible, lo que permite parámetros de navegación tipados.
- ReloadState () continúa manejando la rehidratación del estado después de la tumba.
- Start () es similar pero puede usarse con menos frecuencia debido a la introducción de métodos de inicialización más asíncronos.

Un cambio significativo en MVVMCross 4.x es el soporte continuo para los parámetros de navegación tipados, lo que permite que los datos más estructurados pasen entre los modelos de vista. Además, MVVMCross 4.x establece las bases para futuras mejoras en la navegación y la gestión del ciclo de vida, que se mejoran aún más en MVVMCross 5.x.

Diferencias clave

- Parámetros de navegación: MVVMCross 3.x pasa los parámetros de navegación directamente al método `init ()`, mientras que MVVMCross 4.x admite parámetros de navegación tipados, lo que hace que sea más fácil pasar datos complejos entre ViewModels.
- Flexibilidad del ciclo de vida: MVVMCross 4.x proporciona más flexibilidad en el manejo de los ciclos de vida del model de visión, especialmente con la introducción de métodos de inicialización asincrónica.
- Soporte de tumbas: ambas versiones admiten tumbas, pero MVVMCross 4.x continúa refinando este proceso, asegurando que ViewModels pueda salvar y restaurar efectivamente su estado.

En general, MVVMCross 4.x se basa en la base establecida en 3.X al mejorar la navegación, la gestión del ciclo de vida y la flexibilidad en el manejo de datos complejos y operaciones asincrónicas.

Citas:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/49322704/mvvmcross-view-model-lifecycle---not-working
[3] https://stackoverflow.com/questions/15961664/viewmodel-lifecycle-when-does-it-get-dispuesto
[4] https://stackoverflow.com/questions/71959649/does-mvvmcross-have-a-built-in-message-for-viewmodel-to-tell-view-when-viewappea
[5] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-life-cycle
[6] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-note-upout-views-and-viewmodels
[8] https://www.ramotion.com/blog/what-is-mvvm/
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[11] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[12] https://github.com/mvvmcross/mvvmcross/issues/2738