Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Cómo funciona la tumba en mvvmcross?


¿Cómo funciona la tumba en mvvmcross?


La tumba en MVVMCross se refiere al proceso de guardado y restauración del estado de un modelo View cuando una aplicación se suspende o termina debido a las bajas condiciones de memoria, un escenario común en plataformas móviles como Windows Phone y Android. MVVMCross proporciona mecanismos para manejar este proceso de manera efectiva.

Construcción y ciclo de vida

MVVMCross ViewModels se instancia utilizando un contenedor IOC, que inyecta dependencias en ViewModel. El ciclo de vida de un modelo ViewModel en MVVMCross incluye varios métodos clave:

- Construcción: el ViewModel se crea con dependencias inyectadas a través del contenedor IOC.
- init (): Inicializa el Modelo View con los parámetros de navegación.
- ReloadState (): restaura el estado de ViewModel después de la tumba.
- Inicio (): llamado cuando se completan la inicialización y la rehidratación [3].

Estado de salvación

Cuando una aplicación está tumba, MVVMCross llama al método 'savestateTobundle' en el Modelo ViewModel. Este método le permite guardar el estado de su Modelo ViewModel almacenando datos en un `IMVXBundle`. Es aconsejable usar la serialización JSON para almacenar datos complejos [1].

Restauración de estado

Después de reactivar la aplicación, MVVMCross intenta restaurar el estado de ViewModel. Sin embargo, el método exacto para restaurar el estado puede variar según la plataforma y la versión de MVVMCross. En general, el método 'ReloadState` se usa para rehidratar el modelo de View con el estado guardado [3].

Consideraciones específicas de la plataforma

Cada plataforma compatible con MVVMCross maneja las tumbas de manera diferente:

- Windows Phone: Tombstoning se maneja a través de eventos de página como 'OnnavigatedTo' y 'OnnavigatedFrom`. MVVMCross proporciona mecanismos para guardar y restaurar el estado durante estos eventos, pero puede requerir una configuración adicional para garantizar la restauración del estado adecuada [4] [5].
- Android: MVVMCross maneja la tumba guardando y restaurando el estado ViewModel cuando la aplicación se detiene o reanuda. Sin embargo, pueden surgir problemas si se borra el piso o si los parámetros de navegación no se guardan correctamente [6].

Desafíos y soluciones

Manejo de tumbas en MVVMCross puede ser un desafío, especialmente al navegar con parámetros. Es crucial guardar los parámetros de navegación junto con el estado ViewModel para garantizar la restauración correcta del estado de la aplicación [6] [9]. Además, el uso de bibliotecas auxiliares o soluciones personalizadas puede simplificar el proceso de guardar y restaurar el estado en diferentes plataformas [5] [8].

En resumen, MVVMCross proporciona un marco robusto para manejar tumbas al guardar y restaurar el estado de ViewModel. Sin embargo, requiere una implementación cuidadosa y consideración de los matices específicos de la plataforma para garantizar una recuperación de aplicaciones sin problemas.

Citas:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://www.mvvmcross.com/mvvmcross-51-release/
[3] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-life-cycle
[4] https://stackoverflow.com/questions/16023307/mvvmcross-and-pombstoning
[5] https://www.kenneth-truyers.net/2013/03/13/tombstoning-made-easy-in-windows-phone-mvvm/
[6] https://github.com/mvvmcross/mvvmcross/issues/834
[7] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md
[8] https://jesseliberty.com/2011/04/08/tombstoning-and-mvvm/
[9] https://github.com/mvvmcross/mvvmcross/issues/2458
[10] https://www.mvvmcross.com/mvvmcross-56-release/