MVVMCROSS spracováva situácie s nízkymi pamäťami na rôznych platformách poskytovaním mechanizmov na uloženie a obnovenie stavu pohľadov, čo je rozhodujúce pre udržiavanie stability aplikácie, keď je pamäť obmedzená. Takto riadi tieto situácie na rôznych platformách:
Overview of MvvmCross
MVVMCROSS je aplikácie MVVM s viacerými platformami, ktorý podporuje aplikácie Windows Phone, Windows 8, iOS, Android a WPF. Umožňuje vývojárom implementovať vzor MVVM na týchto platformách, čo uľahčuje väzbu údajov a oddelenie obáv [2] [5]. Framework používa prenosnú knižnicu triedy (PCL) na domy s ViewModels, čo im umožňuje zdieľanie na rôznych platformách [5].
Riešenie situácií s nízkou pamäťou
Android **
V systéme Android čelí MVVMCross výzvy v dôsledku správy životného cyklu a správy pamäte platformy. Životný cyklus Androidu môže viesť k situáciám, keď sa pohľady na pohľady nekreslí bezprostredne po zničení ich súvisiacich názorov. Dôvodom je, že zber odpadu spoločnosti Xamarin sa nemusí vyskytnúť okamžite, najmä ak používanie pamäte nie je vysoké [4]. Na tento účel môžu vývojári používať udalosti ako „ViewAppareing“ a „ViewDISAppareing“ na zrušenie odberu správ od správ a zabezpečiť, aby boli aktívne iba potrebné inštancie zobrazení [4].
iOS **
Zatiaľ čo MVVMCross priamo nezaoberá varovaniami s nízkou pamäťou špecifickými pre iOS, vývojári môžu implementovať riešenia špecifické pre platformu. Napríklad v aplikácii .NET Maui (ktorá je podobná konceptu v rámci medzi platformami, ako je MVVMCross), môžete prepísať `applicationDidReceEmeMoryWarning` v delegáte aplikácie na vyčistenie zdrojov [3]. Samotný MVVMcross však neposkytuje zabudovaný mechanizmus na riešenie týchto varovaní pred iOS.
Windows Phone a ďalšie platformy **
V prípade Windows Phone a ďalších platformách poskytuje MVVMCross všeobecný prístup k správe pamäte tým, že vývojárom umožňuje monitorovať udalosti na úrovni stránky, ako sú „OnnavigatedTo` a` OnnavigatedFrom`. Tieto udalosti sa v prípade potreby môžu použiť na implementáciu vlastnej logiky na uvoľnenie zdrojov [8].
Uloženie a obnovenie stavu ViewModel
MVVMCross poskytuje metódu s názvom „Savestatetobundle` v triede` MVXViewModel`, ktorá umožňuje vývojárom zachrániť stav svojich pohľadov, keď je aplikácia Tombstoned alebo čelí nízkym pamäťovým situáciám. Tento stav je možné obnoviť neskôr, keď sa aplikácia obnoví a zabezpečí, aby sa zachoval pokrok používateľa [1]. Táto funkcia je obzvlášť užitočná na platformách, ako je Android, kde sa stav aplikácie môže často uložiť a obnovovať kvôli obmedzeniam pamäte.
Stručne povedané, zatiaľ čo MVVMCross neposkytuje platformu špecifické pre platformu pre každú platformu, ponúka nástroje na správu stavu ViewModel a poskytuje rámec, ktorý vývojárom umožňuje implementovať vlastné riešenia na základe špecifických potrieb každej platformy.
Citácie:[1] https://www.mvvmcross.com/documentation/funmamentals/viewmodel-lifecycle
Https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvvm-apps-with-xamarin-mith-xamarin-mith-mith-with-xamarin-mith
[3] https://learn.microsoft.com/en-us/answers/questions/1360447/net-maui-how-dow-do-you-process-low-mimory-notificatio
[4] https://stackoverflow.com/questions/54040726/mvvmcross-android-appears-to-beep-hold-of-woldmodels-and-Disposing-we
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvvmcross-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-verview
[10] https://www.hasaltaiar.com.au/a-Journey-of-hunting-memory-leaks-in-xamarin-2/