Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hur fungerar graven i mvvmcross


Hur fungerar graven i mvvmcross


Tombstoning i MVVMCross hänvisar till processen att spara och återställa tillståndet för en synmodell när en applikation avbryts eller avslutas på grund av låga minnesförhållanden, ett vanligt scenario i mobila plattformar som Windows Phone och Android. MVVMCross tillhandahåller mekanismer för att hantera denna process effektivt.

Konstruktion och livscykel

MVVMCross ViewModels instanseras med en IOC -behållare, som injicerar beroenden i ViewModel. Livscykeln för en ViewModel i MVVMCross innehåller flera viktiga metoder:

- Konstruktion: ViewModel skapas med beroenden injiceras via IOC -behållaren.
- init (): Initialiserar visningsmodellen med navigationsparametrar.
- ReloadState (): Återställer tillståndet för ViewModel efter grav.
- Start (): kallas när initialisering och rehydrering är fullständig [3].

Spara tillstånd

När en applikation är gravstoned, kallar MVVMCross metoden "SaveStatetObundle" på ViewModel. Den här metoden låter dig spara tillståndet för din ViewModel genom att lagra data i en "IMVXBundle". Det är tillrådligt att använda JSON -serialisering för lagring av komplexa data [1].

Återställa tillstånd

Efter att applikationen har återaktiverats försöker MVVMCross att återställa ViewModels tillstånd. Den exakta metoden för att återställa tillstånd kan emellertid variera beroende på plattform och version av MVVMCross. I allmänhet används metoden "ReloadState" för att rehydrera visningsmodellen med det sparade tillståndet [3].

plattformsspecifika överväganden

Varje plattform som stöds av MVVMCross hanterar graven på olika sätt:

- Windows Phone: Tombstoning hanteras genom sidhändelser som `onnavigatedto` och` onnavigated från '. MVVMCross tillhandahåller mekanismer för att rädda och återställa tillstånd under dessa händelser, men det kan kräva ytterligare installation för att säkerställa korrekt återställning av tillstånd [4] [5].
- Android: MVVMCross hanterar gravstoning genom att spara och återställa ViewModel -tillståndet när applikationen pausas eller återupptas. Problem kan emellertid uppstå om backstacket rensas eller om navigationsparametrar inte sparas korrekt [6].

Utmaningar och lösningar

Att hantera gravstoning i MVVMCross kan vara utmanande, särskilt när du navigerar med parametrar. Det är avgörande att spara navigationsparametrar tillsammans med ViewModel -tillståndet för att säkerställa korrekt återställande av applikationens tillstånd [6] [9]. Dessutom kan du använda hjälpbibliotek eller anpassade lösningar förenkla processen för att spara och återställa tillstånd över olika plattformar [5] [8].

Sammanfattningsvis tillhandahåller MVVMCross en robust ram för att hantera gravstoning genom att spara och återställa ViewModel State. Det kräver emellertid noggrann implementering och övervägande av plattformsspecifika nyanser för att säkerställa sömlös applikation.

Citeringar:
[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.kenh-truyers.net/2013/03/13/tombstoning-made-easy-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/