MVVMcross obravnava nizke spominske situacije na različnih platformah, tako da zagotavlja mehanizme za shranjevanje in obnovo stanja ViewModels, kar je ključnega pomena za ohranjanje stabilnosti aplikacije, kadar je pomnilnik omejen. Tukaj je, kako upravlja te situacije na različnih platformah:
Pregled mvvmcross
MVVMcross je okvir MVVM med platformami, ki podpira aplikacije Windows Phone, Windows 8, iOS, Android in WPF. Razvijalcem omogoča izvajanje vzorca MVVM na teh platformah, kar olajša vezavo podatkov in ločevanje pomislekov [2] [5]. Okvir uporablja prenosno knjižnico razredov (PCL) za hiše ViewModels, kar jim omogoča skupno rabo na različnih platformah [5].
Ravnanje z nizkimi pomnilniškimi situacijami
android **
Na Androidu se MVVMcross sooča z izzivi zaradi življenjskega cikla platforme in upravljanja pomnilnika. Androidov življenjski cikel lahko privede do situacij, ko se vidni modeli ne odstranijo takoj po uničenju njihovih pripadajočih pogledov. To je zato, ker Xamarinovo zbiranje smeti se morda ne bo zgodilo takoj, še posebej, če uporaba pomnilnika ni visoka [4]. Za upravljanje tega lahko razvijalci uporabljajo dogodke, kot sta "Viewapearning" in "ViewDisappearing", da se odjavijo iz sporočil in zagotovijo, da ostanejo le potrebni primeri vidnih modelov [4].
ios **
Medtem ko MVVMcross ne obravnava neposredno opozorila o nizkih pomnilnikih, specifičnih za iOS, lahko razvijalci implementirajo rešitve, specifične za platformo. Na primer, v aplikaciji .NET maui (ki je po konceptu podobna kot okviri navzkrižnih platform, kot je MVVMcross), lahko v aplikaciji za čiščenje virov preglasite `ApplicationDidReceiveMorywarning" v delegatu aplikacije [3]. Vendar MVVMcross sam ne zagotavlja vgrajenega mehanizma za ravnanje s temi opozorili na iOS.
Windows Phone in druge platforme **
Za Windows Phone in druge platforme MVVMcross ponuja splošen pristop k upravljanju pomnilnika, saj razvijalcem omogoča spremljanje dogodkov na ravni strani, kot sta `onnavigatedTo` in` onNavigated from. Te dogodke lahko uporabite za izvajanje logike po meri za sprostitev virov, kadar je to potrebno [8].
Shranjevanje in obnavljanje stanja ViewModel
MVVMcross ponuja metodo, imenovano `saveStateToBundle` v razredu` mvxviewModel`, ki razvijalcem omogoča, da shranijo stanje svojih stališč, ko je aplikacija nagnjena ali se sooča z nizkimi pomnilniškimi situacijami. To stanje je mogoče obnoviti pozneje, ko se aplikacija nadaljuje, in zagotovi, da se uporabnikov napredek ohrani [1]. Ta funkcija je še posebej uporabna na platformah, kot je Android, kjer se lahko stanje aplikacije pogosto shrani in obnavlja zaradi omejitev pomnilnika.
Če povzamemo, čeprav MVVMcross ne zagotavlja mehanizmov za nizko pomnilnik, specifičnih za platformo za vsako platformo, ponuja orodja za upravljanje stanja ViewModel in ponuja okvir, ki razvijalcem omogoča izvajanje rešitev po meri, ki temeljijo na specifičnih potrebah vsake platforme.
Navedbe:[1] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
[2] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[3] https://learn.microsoft.com/en-us/answers/questions/1360447/net-maui-how-do-you-process-low-memory-notificatio
[4] https://stackoverflow.com/questions/54040726/mvvmcross-android-appears-to-be-ep-hhold-of-viewModels-and-in-disposing-w
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[6] https://stackoverflow.com/questions/32220007/what-does-mvvmcross-do-that-xamarin-doesnt-already
[7] https://www.reddit.com/r/dotnetmaui/comments/1c1qlou/maui_memory_leaks/
[8] https://stackoverflow.com/q/19817284
[9] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[10] https://www.hasaltaiar.com.au/a-journey-of-hunting-memory-leaks-in-xamarin-2/