MVVMCROSS -versjoner 3.x og 4.x har flere forskjeller angående ViewModel -livssyklusen, hovedsakelig sentrert rundt hvordan ViewModels er konstruert, initialisert og administrert.
mvvmcross 3.x
I MVVMCROSS 3.x følger ViewModel Lifecycle en sekvens kjent som CIRS: Construction, Init (), ReloadState () og start (). Denne sekvensen brukes til å initialisere og administrere visningsmodeller. Her er et sammenbrudd:
- Konstruksjon: ViewModel er instantiert ved hjelp av IOC -beholderen, noe som gir mulighet for avhengighetsinjeksjon. Det er her tjenester og andre avhengigheter blir injisert i ViewModel.
- init (): Denne metoden brukes til å initialisere navigasjonsparametere. Det kalles etter konstruksjon og er der du vanligvis vil sette opp innledende data eller parametere som er sendt til ViewModel.
- ReloadState (): Denne metoden er ansvarlig for å rehydrere ViewModels tilstand etter gravstoning, som oppstår når appen blir suspendert og deretter gjenopptas på grunn av lave minneforhold.
- Start (): Denne metoden kalles når initialisering og rehydrering er fullført. Det brukes vanligvis til å starte alle pågående operasjoner eller oppgaver.
mvvmcross 4.x
MVVMCROSS 4.x fortsetter å bruke CIRS -sekvensen, men introduserer noen endringer og forbedringer:
- Konstruksjonen forblir den samme ved å bruke IOC for avhengighetsinjeksjon.
- init () fremdeles initialiserer navigasjonsparametere, men er nå mer fleksibel, noe som gir mulighet for skrevne navigasjonsparametere.
- ReloadState () fortsetter å håndtere statlig rehydrering etter gravstoning.
- Start () er lik, men kan brukes sjeldnere på grunn av introduksjonen av mer asynkrone initialiseringsmetoder.
En betydelig endring i MVVMCROSS 4.x er den fortsatte støtten for skrevne navigasjonsparametere, noe som gir mulighet for mer strukturerte data som passerer mellom ViewModels. I tillegg legger MVVMCROSS 4.x grunnlaget for fremtidige forbedringer i navigasjon og livssyklusstyring, som ytterligere forbedres i MVVMCROSS 5.x.
viktige forskjeller
- Navigasjonsparametere: MVVMCROSS 3.x passerer navigasjonsparametere direkte til `init ()` -metoden, mens MVVMCROSS 4.x støtter skrevne navigasjonsparametere, noe som gjør det lettere å passere komplekse data mellom ViewModels.
- Livssyklusfleksibilitet: MVVMCROSS 4.x gir mer fleksibilitet i håndtering av ViewModel Lifecycles, spesielt med introduksjonen av asynkrone initialiseringsmetoder.
- Tombstoning Support: Begge versjonene støtter gravstoning, men MVVMCROSS 4.x fortsetter å avgrense denne prosessen, og sikrer at ViewModels effektivt kan lagre og gjenopprette staten.
Totalt sett bygger MVVMCROSS 4.x på grunnlaget som er etablert i 3.x ved å forbedre navigasjon, livssyklusstyring og fleksibilitet i håndtering av komplekse data og asynkrone operasjoner.
Sitasjoner:[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/49322704/MVVMCROSS-SIEW-MODEL-LIFECYCLE-RESTORE-NOT-WORKING
[3] https://stackoverflow.com/questions/15961664/viewmodel-lifecycle-when-does-it-et-tisposed
[4] https://stackoverflow.com/questions/71959649/does-mvvmcross-have-a-built-in-message-for- viewmodel-to-tell-view-when-viewappa
[5] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-life-cycle
[6] https://www.mvvmcross.com/documentation/advanced/customizing-using-apps-app-and-setup
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-note-about-syns-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