Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vilka är de viktigaste skillnaderna mellan mvvmcross 4.x och 3.x angående ViewModel Lifecycle


Vilka är de viktigaste skillnaderna mellan mvvmcross 4.x och 3.x angående ViewModel Lifecycle


MVVMCROSS -versioner 3.x och 4.x har flera skillnader beträffande visningsmodellens livscykel, främst centrerade kring hur ViewModels är konstruerade, initialiserade och hanteras.

mvvmcross 3.x

I MVVMCROSS 3.x följer ViewModel Lifecycle en sekvens som kallas Cirs: Construction, Init (), ReloadState () och Start (). Denna sekvens används för att initialisera och hantera ViewModels. Här är en uppdelning:

- Konstruktion: ViewModel är instanserad med IOC -behållaren, vilket möjliggör beroendeinjektion. Det är här tjänster och andra beroenden injiceras i visningsmodellen.
- init (): Denna metod används för att initiera navigationsparametrar. Det kallas efter konstruktion och är där du vanligtvis skulle ställa in eventuella initiala data eller parametrar som skickas till ViewModel.
- ReloadState (): Denna metod ansvarar för att rehydrera ViewModels tillstånd efter gravstoning, vilket inträffar när appen är avstängd och sedan återupptas på grund av låga minnesförhållanden.
- Start (): Denna metod kallas när initialisering och rehydrering är klar. Det används vanligtvis för att starta pågående operationer eller uppgifter.

mvvmcross 4.x

MVVMCross 4.x fortsätter att använda CIRS -sekvensen men introducerar några förändringar och förbättringar:

- Konstruktionen förblir densamma med IOC för beroendeinjektion.
- init () initialiserar fortfarande navigationsparametrar men är nu mer flexibel, vilket möjliggör typade navigationsparametrar.
- ReloadState () fortsätter att hantera tillståndsrehaydrering efter grav.
- Start () är liknande men kan användas mindre ofta på grund av införandet av mer asynkrona initialiseringsmetoder.

En betydande förändring i MVVMCross 4.x är det fortsatta stödet för typade navigationsparametrar, vilket möjliggör mer strukturerade data som passerar mellan ViewModels. Dessutom lägger MVVMCross 4.x grunden för framtida förbättringar i navigering och livscykelhantering, som ytterligare förbättras i MVVMCross 5.x.

Nyckelskillnader

- Navigationsparametrar: MVVMCross 3.x passerar navigationsparametrar direkt till metoden 'init ()', medan MVVMCross 4.x stöder typ navigationsparametrar, vilket gör det enklare att skicka komplexa data mellan ViewModels.
- Livscykelflexibilitet: MVVMCross 4.x ger mer flexibilitet i hantering av visningsmodell livscykler, särskilt med introduktionen av asynkrona initialiseringsmetoder.
- Tombstoning Support: Båda versionerna stöder gravstoning, men MVVMCross 4.x fortsätter att förfina denna process, vilket säkerställer att ViewModels effektivt kan spara och återställa sitt tillstånd.

Sammantaget bygger MVVMCross 4.x på grunden som är etablerad i 3.x genom att förbättra navigering, livscykelhantering och flexibilitet i hantering av komplexa data och asynkrona operationer.

Citeringar:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/49322704/mvvmcross-view-model-lifecycle-re-tore-not-working
]
]
[5] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-life-cycle
[6] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-note-about-views-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/geting-started/mvvmcross-overview
[12] https://github.com/mvvmcross/mvvmcross/issues/2738