Les tombes dans MVVMCross se réfèrent au processus de sauvegarde et de restauration de l'état d'un délai de vue lorsqu'une application est suspendue ou terminée en raison de conditions de mémoire faible, un scénario commun dans les plateformes mobiles comme Windows Phone et Android. MVVMCross fournit des mécanismes pour gérer efficacement ce processus.
Construction et cycle de vie
MVVMCROSS ViewModels est instancié à l'aide d'un conteneur IOC, qui injecte des dépendances dans le ViewModel. Le cycle de vie d'un code de vue dans MVVMCross comprend plusieurs méthodes clés:
- Construction: le ViewModel est créé avec des dépendances injectées via le conteneur IOC.
- init (): initialise le ViewModel avec les paramètres de navigation.
- ReloadState (): restaure l'état du ViewModel après Tombstoning.
- start (): appelé lorsque l'initialisation et la réhydratation sont terminées [3].
État de sauvegarde
Lorsqu'une application est tombée, MVVMCROSS appelle la méthode `SavestateTobundle» sur le ViewModel. Cette méthode vous permet de sauvegarder l'état de votre ViewModel en stockant des données dans un `IMVXBUNDLE`. Il est conseillé d'utiliser la sérialisation JSON pour stocker des données complexes [1].
Restauration État
Une fois l'application réactivée, MVVMCross tente de restaurer l'état de ViewModel. Cependant, la méthode exacte de restauration de l'état peut varier en fonction de la plate-forme et de la version de MVVMCross. En général, la méthode «ReloadState» est utilisée pour réhydrater le ViewModel avec l'état enregistré [3].
Considérations spécifiques à la plate-forme
Chaque plate-forme soutenue par MVVMCross gère différemment les tombes:
- Windows Phone: Tombstoning est géré via des événements de page comme «OnnavigatedTo» et «OnnavigatedFrom». MVVMCross fournit des mécanismes pour enregistrer et restaurer l'état lors de ces événements, mais il peut nécessiter une configuration supplémentaire pour assurer une restauration appropriée de l'état [4] [5].
- Android: MVVMCross gère les tombes en enregistrant et en restaurant l'état de ViewModel lorsque l'application est interrompue ou repris. Cependant, des problèmes peuvent survenir si le back -st est effacé ou si les paramètres de navigation ne sont pas correctement enregistrés [6].
défis et solutions
La gestion des tombes dans MVVMCROSS peut être difficile, en particulier lors de la navigation avec des paramètres. Il est crucial d'économiser des paramètres de navigation ainsi que l'état de ViewModel pour assurer une restauration correcte de l'état de l'application [6] [9]. De plus, l'utilisation de bibliothèques d'assistance ou de solutions personnalisées peut simplifier le processus de sauvegarde et de restauration de l'état sur différentes plates-formes [5] [8].
En résumé, MVVMCROSS fournit un cadre robuste pour gérer les tombes en enregistrant et en restaurant l'état de ViewModel. Cependant, il nécessite une mise en œuvre minutieuse et une prise en compte des nuances spécifiques à la plate-forme pour assurer une récupération d'application transparente.
Citations:[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-tombstoning
[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/