Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hva er de viktigste forskjellene mellom MVVMCROSS 4.x og 3.x angående ViewModel Lifecycle


Hva er de viktigste forskjellene mellom MVVMCROSS 4.x og 3.x angående ViewModel Lifecycle


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