Gravstoning i MVVMCROSS refererer til prosessen med å lagre og gjenopprette tilstanden til en visningsmodell når en applikasjon er suspendert eller avsluttet på grunn av lave minneforhold, et vanlig scenario i mobile plattformer som Windows Phone og Android. MVVMCROSS gir mekanismer for å håndtere denne prosessen effektivt.
Konstruksjon og livssyklus
MVVMCROSS ViewModels blir instantiert ved hjelp av en IOC -beholder, som injiserer avhengigheter i ViewModel. Livssyklusen til en ViewModel i MVVMCROSS inkluderer flere viktige metoder:
- Konstruksjon: ViewModel er opprettet med avhengigheter injisert via IOC -beholderen.
- init (): Initialiserer ViewModel med navigasjonsparametere.
- ReloadState (): gjenoppretter tilstanden til ViewModel etter gravstoning.
- Start (): Kalt når initialisering og rehydrering er fullført [3].
Saving State
Når en applikasjon er gravstonet, kaller MVVMCROSS `Savestatetobundle` -metoden på ViewModel. Denne metoden lar deg lagre tilstanden til visningsmodellen din ved å lagre data i en `imvxbundle`. Det anbefales å bruke JSON -serialisering for lagring av komplekse data [1].
Restoring State
Etter at applikasjonen er reaktivert, er MVVMCROSS forsøk på å gjenopprette ViewModels tilstand. Imidlertid kan den nøyaktige metoden for å gjenopprette tilstand variere avhengig av plattformen og versjonen av MVVMCROSS. Generelt brukes `ReloadState` -metoden for å rehydrere ViewModel med den lagrede tilstanden [3].
plattformspesifikke hensyn
Hver plattform støttet av MVVMCROSS håndterer gravstoning annerledes:
- Windows Phone: Tombstoning håndteres gjennom sidehendelser som `onnavigatedto` og` onnavigatedFrom`. MVVMCROSS gir mekanismer for å lagre og gjenopprette tilstand under disse hendelsene, men det kan kreve ytterligere oppsett for å sikre riktig tilstandsrestaurering [4] [5].
- Android: MVVMCROSS håndterer gravstoning ved å lagre og gjenopprette ViewModel -tilstanden når applikasjonen blir satt på pause eller gjenopptatt. Imidlertid kan det oppstå problemer hvis backstack er ryddet eller hvis navigasjonsparametere ikke er riktig lagret [6].
utfordringer og løsninger
Håndtering av gravstoning i MVVMCROSS kan være utfordrende, spesielt når du navigerer med parametere. Det er avgjørende å lagre navigasjonsparametere sammen med ViewModel -tilstanden for å sikre riktig restaurering av applikasjonens tilstand [6] [9]. I tillegg kan bruk av hjelperbiblioteker eller tilpassede løsninger forenkle prosessen med å lagre og gjenopprette tilstand på tvers av forskjellige plattformer [5] [8].
Oppsummert gir MVVMCROSS et robust rammeverk for håndtering av gravstoning ved å redde og gjenopprette ViewModel State. Imidlertid krever det nøye implementering og vurdering av plattformspesifikke nyanser for å sikre sømløs applikasjonsgjenoppretting.
Sitasjoner:[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://www.mvvmcross.com/mvvmcross-51-release/
[3] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-life-cycle
[4] https://stackoverflow.com/questions/16023307/mvvmcross-and-tombstoning
[5] https://www.kenneth-truyers.net/2013/03/13/tombstoning-made--in-windows-phone-mvvm/
[6] https://github.com/mvvmcross/mvvmcross/issues/834
[7] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md
[8] https://jesseliberty.com/2011/04/08/tombstoning-and-mvvm/
[9] https://github.com/mvvmcross/mvvmcross/issues/2458
[10] https://www.mvvmcross.com/mvvmcross-56-release/