„MVVMCross“ tvarko žemos atminties situacijas „Android“, pateikdama mechanizmus, kaip išsaugoti ir atkurti „ViewModels“ būseną. Tai labai svarbu, nes „Android“ turi savo gyvenimo ciklo ir atminties valdymo sistemą, kuri gali atgauti atmintį iš programų arba, jei reikia, visiškai sustabdyti jas, kad būtų galima atlaisvinti išteklius kritinėms užduotims [1] [3]. Čia pateikiama išsami apžvalga, kaip MVVMCROSS tvarko šias situacijas:
„ViewModel“ būsenos taupymas ir atkūrimas
„MVVMCross“ leidžia kūrėjams išsaugoti savo „ViewModels“ būseną ir vėliau jį atkurti. Tai ypač naudinga scenarijuose, kai „Android“ sistema gali nutraukti programą dėl žemų atminties sąlygų. Išsaugojusi „ViewModel“ būseną, programa gali atkurti ankstesnę būseną, kai ji bus paleista iš naujo, suteikdama vientisą vartotojo patirtį [1].
su atminties susijusių įvykių tvarkymas
Nors pats „MVVMCross“ tiesiogiai neįgyvendina „Android“ specifinių atminties valdymo funkcijų, tokių kaip „OnTrimmemory ()“, kūrėjai, naudojantys „MvVMCross“, vis tiek gali panaudoti šias „Android“ API savo veikloje. Įdiegus „ComponentCallbacks2“ ir „OnTrimemory“ () „ComponentCallbacks2“, „OnTrimmemory ()“ leidžia „Apps“ savanoriškai atleisti atmintį reaguojant į sistemos įvykius, sumažinant tikimybę, kad bus nutrauktas žemo atminties žudikas [3].
Atminties nutekėjimai ir „ViewModel“ šalinimas
„MVVMCross“ programose atminties nutekėjimas gali atsirasti, jei „ViewModels“ nėra tinkamai pašalinami. Labai svarbu, kad „ViewModels“ tiesiogiai nenurodytų peržiūros, kad būtų išvengta atminties nutekėjimo. Naudojant silpnas nuorodas arba rankiniu būdu valdant stiprias nuorodas, naudojant kruopščią prenumeratą ir atjungus įvykius, gali būti išvengta tokių nutekėjimų [5].
Suderinamumo atnaujinimas
Norint nukreipti naujesnes „Android“ versijas, tokias kaip „Android 10.0“, labai svarbu atnaujinti „MVVMCross“ į 6.4.1 ar aukštesnę versiją. Šis atnaujinimas yra būtinas norint užtikrinti suderinamumą su naujausiais „Android“ reikalavimais ir išvengti avarijų ar problemų, susijusių su pasenusiais rėmais [2].
Derinimo atminties problemos
Diagnozuojant su atmintį susijusias problemas „MVVMCross Android“ programose, tokie įrankiai, tokie kaip „Android“ derinimo monitorius, gali būti neįkainojami. Šios priemonės leidžia kūrėjams sekti atminties paskirstymą ir nustatyti galimus atminties nutekėjimą ar neveiksmingumą [7].
Apibendrinant galima pasakyti, kad „MVVMCross“ pateikia „ViewModel“ būsenos valdymo pagrindą, tačiau remiasi kūrėjais, kad įgyvendintų konkrečios platformos atminties valdymo strategijas, tokias kaip „OnTrimmemory ()“ naudojimas „ir užtikrina tinkamą„ View Model “šalinimą, kad būtų išvengta atminties nutekėjimo.
Citatos:[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/59078153/mvvmcross-android-10-0-q-mainactivity-exception-crash-on-setcontentview/59558389
[3] https://developer.android.com/topic/performance/memory
[4] https://www.mvvmcross.com/documentation/platform/android/android-linearLayout
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-reak-fecause-of-not-pieping-viewmodels
[6] https://av.tib.eu/media/51517
[7] https://www.codeproject.com/articles/798462/diagnosing-memory-usage-in-a-xamarin-android-appli
[8] https://learn.microsoft.com/en-us/answers/questions/1321808/maui-android-memory-profiling-(heapdump)