Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Was sind die Hauptunterschiede zwischen mvvmcross 4.x und 3.x bezüglich des ViewModel -Lebenszyklus


Was sind die Hauptunterschiede zwischen mvvmcross 4.x und 3.x bezüglich des ViewModel -Lebenszyklus


MVVMCross -Versionen 3.x und 4.x weisen verschiedene Unterschiede hinsichtlich des ViewModel -Lebenszyklus auf, der hauptsächlich darum geht, wie ViewModels konstruiert, initialisiert und verwaltet werden.

Mvvmcross 3.x

In MVVMCross 3.x folgt der ViewModel -Lebenszyklus einer Sequenz, die als CIRS: Construction, Init (), Reloadstate () und Start () bekannt ist. Diese Sequenz wird verwendet, um ViewModels zu initialisieren und zu verwalten. Hier ist eine Aufschlüsselung:

- Konstruktion: Das ViewModel wird mit dem IOC -Behälter instanziiert, wodurch die Abhängigkeitsinjektion ermöglicht wird. Hier werden Dienste und andere Abhängigkeiten in das ViewModel injiziert.
- Init (): Diese Methode wird verwendet, um die Navigationsparameter zu initialisieren. Es wird nach der Konstruktion aufgerufen und befindet sich dort, wo Sie in der Regel alle anfänglichen Daten oder Parameter einrichten, die an das ViewModel übergeben wurden.
.
- start (): Diese Methode wird aufgerufen, wenn die Initialisierung und Rehydratisierung abgeschlossen sind. Es wird normalerweise verwendet, um laufende Operationen oder Aufgaben zu starten.

Mvvmcross 4.x

MVVMCross 4.x verwendet weiterhin die CIRS -Sequenz, führt jedoch einige Änderungen und Verbesserungen ein:

- Der Bau bleibt gleich, wobei IOC für die Abhängigkeitsinjektion verwendet wird.
- Init () initialisiert immer noch die Navigationsparameter, ist aber jetzt flexibler und ermöglicht typisierte Navigationsparameter.
- ReloadState () behandelt nach dem Grabston weiterhin die Rehydration der Zustandsrehydration.
- start () ist ähnlich, kann aber aufgrund der Einführung von mehr asynchronen Initialisierungsmethoden seltener verwendet werden.

Eine signifikante Änderung von MVVMCross 4.x ist die fortgesetzte Unterstützung für typisierte Navigationsparameter, die es ermöglicht, strukturiertere Daten zwischen ViewModels zu übertragen. Darüber hinaus basiert MVVMCross 4.x die Grundlage für zukünftige Verbesserungen des Navigation und des Lebenszyklusmanagements, die in MVVMCross 5.x weiter verbessert werden.

Schlüsselunterschiede

- Navigationsparameter: MVVMCross 3.x übergibt Navigationsparameter direkt an die Methode "Init ()", während MVVMCROSS 4.x die typisierten Navigationsparameter unterstützt, wodurch komplexe Daten zwischen ViewModels geleitet werden.
- Lebenszyklusflexibilität: Mvvmcross 4.x bietet mehr Flexibilität bei der Behandlung von ViewModel -Lebenszyklen, insbesondere mit der Einführung asynchroner Initialisierungsmethoden.
- Tombstoning -Unterstützung: Beide Versionen unterstützen Tomsteining, aber Mvvmcross 4.x verfeinert diesen Prozess weiter und stellt sicher, dass ViewModels ihren Zustand effektiv speichern und wiederherstellen können.

Insgesamt baut MVVMCross 4.x auf der in 3.x festgelegten Fundament auf, indem die Navigation, das Lebenszyklusmanagement und die Flexibilität bei der Behandlung komplexer Daten und asynchroner Vorgänge verstärkt werden.

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