MVVMCROSS -versioner 3.x og 4.x har adskillige forskelle med hensyn til ViewModel Lifecycle, primært centreret omkring, hvordan ViewModels er konstrueret, initialiseret og styret.
MVVMCROSS 3.x
I MVVMCROSS følger ViewModel Lifecycle en sekvens kendt som CIRS: Construction, init (), genoadState () og Start (). Denne sekvens bruges til at initialisere og styre ViewModels. Her er en sammenbrud:
- Konstruktion: ViewModel er instantieret ved hjælp af IOC -beholderen, hvilket giver mulighed for afhængighedsinjektion. Det er her tjenester og andre afhængigheder injiceres i ViewModel.
- init (): Denne metode bruges til at initialisere navigationsparametre. Det kaldes efter konstruktion, og det er her, du typisk vil konfigurere alle indledende data eller parametre, der er overført til ViewModel.
- genadstat (): Denne metode er ansvarlig for at rehydrere ViewModel's tilstand efter gravstoning, der opstår, når appen suspenderes og derefter genoptages på grund af lave hukommelsesforhold.
- Start (): Denne metode kaldes, når initialisering og rehydrering er komplet. Det bruges typisk til at starte alle løbende operationer eller opgaver.
MVVMCROSS 4.x
MVVMCROSS 4.x bruger fortsat CIRS -sekvensen, men introducerer nogle ændringer og forbedringer:
- Konstruktionen forbliver den samme ved hjælp af IOC til afhængighedsinjektion.
- init () initialiserer stadig navigationsparametre, men er nu mere fleksible, hvilket giver mulighed for indtastede navigationsparametre.
- genadstat () håndterer fortsat statsrehydrering efter gravstoning.
- Start () er ens, men kan bruges sjældnere på grund af introduktionen af mere asynkrone initialiseringsmetoder.
En betydelig ændring i MVVMCROSS 4.x er den fortsatte understøttelse af indtastede navigationsparametre, som muliggør mere strukturerede data, der passerer mellem ViewModels. Derudover lægger MVVMCROSS 4.X grundlaget for fremtidige forbedringer i navigation og livscyklusstyring, som yderligere forbedres i MVVMCROSS 5.x.
Nøgleforskelle
- Navigationsparametre: MVVMCROSS 3.X videregiver navigationsparametre direkte til metoden `init ()`, mens MVVMCROSS 4.X understøtter typiske navigationsparametre, hvilket gør det lettere at videregive komplekse data mellem ViewModels.
- Livscyklusfleksibilitet: MVVMCROSS 4.x giver mere fleksibilitet i håndtering af ViewModel Lifecycles, især med introduktionen af asynkrone initialiseringsmetoder.
- Tombstoning -support: Begge versioner understøtter gravstoning, men MVVMCROSS 4.X fortsætter med at forfine denne proces, hvilket sikrer, at ViewModels effektivt kan redde og gendanne deres tilstand.
Generelt bygger MVVMCROSS 4.X på det fundament, der er etableret i 3.x ved at forbedre navigation, livscyklusstyring og fleksibilitet i håndtering af komplekse data og asynkrone operationer.
Citater:[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/49322704/mvvmcross-view-model-lifecycle-restore-not-working
[3] https://stackoverflow.com/questions/15961664/viewmodel-lifecycle-when-does-t-get-disposed
[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-sising-app-and-setup
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-note-about-view-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