Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako MVVMCross zvláda nízke pamäťové situácie na rôznych platformách


Ako MVVMCross zvláda nízke pamäťové situácie na rôznych platformách


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/