Das Tombstoning in MVVMCross bezieht sich auf den Prozess des Speicherns und Wiederherstellens des Standes eines ViewModel, wenn eine Anwendung aufgrund von geringen Speicherbedingungen ausgesetzt oder beendet wird, ein gemeinsames Szenario in mobilen Plattformen wie Windows Phone und Android. MVVMCROSS liefert Mechanismen, um diesen Prozess effektiv zu bewältigen.
Konstruktion und Lebenszyklus
MVVMCross ViewModels werden mit einem IOC -Behälter instanziiert, der Abhängigkeiten in das ViewModel injiziert. Der Lebenszyklus eines ViewModel in mvvmcross enthält mehrere Schlüsselmethoden:
- Konstruktion: Das ViewModel wird mit Abhängigkeiten erstellt, die über den IOC -Behälter injiziert werden.
- Init (): Initialisiert das ViewModel mit Navigationsparametern.
- reloadstate (): stellt den Stand des ViewModel nach dem Grabstonieren wieder her.
- start (): Wenn die Initialisierung und Rehydratisierung abgeschlossen sind [3].
Rettungsstatus
Wenn eine Anwendung Tombstoned ist, ruft MVVMCross die "Savestatetobundle` -Methode auf dem ViewModel" auf. Mit dieser Methode können Sie den Status Ihres ViewModel speichern, indem Sie Daten in einem "ImvxBundle`" speichern. Es ist ratsam, die JSON -Serialisierung zum Speichern komplexer Daten zu verwenden [1].
State restaurieren
Nachdem die Anwendung reaktiviert wurde, versucht MVVMCROSS, den Status des ViewModel wiederherzustellen. Die genaue Methode zur Wiederherstellung des Status kann jedoch je nach Plattform und Version von MVVMCross variieren. Im Allgemeinen wird die "Reloadstate" -Methode verwendet, um das ViewModel mit dem gespeicherten Zustand zu rehydrieren [3].
Plattformspezifische Überlegungen
Jede von MVVMCross unterstützte Plattform verarbeitet Tomsteining unterschiedlich:
- Windows Phone: Tombstoning wird durch Seitenereignisse wie "Onnavigatedto" und "OnnavigatedFrom" behandelt. MVVMCross bietet Mechanismen zur Speicherung und Wiederherstellung des Zustands bei diesen Ereignissen. Möglicherweise ist jedoch eine zusätzliche Einrichtung erforderlich, um eine ordnungsgemäße Wiederherstellung der Zustandsrechnung sicherzustellen [4] [5].
. Es können jedoch Probleme auftreten, wenn der Backstack gelöscht wird oder wenn Navigationsparameter nicht ordnungsgemäß gespeichert sind [6].
Herausforderungen und Lösungen
Der Umgang mit Tombstoning in MVVMCross kann eine Herausforderung sein, insbesondere beim Navigieren mit Parametern. Es ist wichtig, Navigationsparameter zusammen mit dem ViewModel -Zustand zu speichern, um die korrekte Wiederherstellung des Zustands der Anwendung zu gewährleisten [6] [9]. Darüber hinaus kann die Verwendung von Helferbibliotheken oder benutzerdefinierten Lösungen den Prozess des Speicherns und Wiederherstellens auf verschiedene Plattformen vereinfachen [5] [8].
Zusammenfassend bietet MVVMCross einen robusten Rahmen für den Umgang mit Tombstoning, indem es den Standmodel -Zustand speichert und wiederherstellt. Es erfordert jedoch eine sorgfältige Implementierung und Berücksichtigung plattformspezifischer Nuancen, um eine nahtlose Anwendungswiederherstellung sicherzustellen.
Zitate:[1] https://www.mvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://www.mvmcross.com/mvmcross-51-release/
[3] https://stackoverflow.com/questions/29372480/mvmcross-viewmodel-life-cycle
[4] https://stackoverflow.com/questions/16023307/mvvmcross-tombstoning
[5] https://www.kenneth-truyers.net/2013/03/13/tombstoning-made-easy-in-windows-phone-mvm/
[6] https://github.com/mvvmcross/mvvmcross/issues/834
[7] https://github.com/mvvmcross/mvmcross/blob/develop/changelog.md
[8] https://jesseliberty.com/2011/04/08/tombstoning-and-mvm/
[9] https://github.com/mvvmcross/mvmcross/issues/2458
[10] https://www.mvmcross.com/mvmcross-56-release/