Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā MVVMCross rīkojas ar zemu atmiņas situāciju situācijām dažādās platformās


Kā MVVMCross rīkojas ar zemu atmiņas situāciju situācijām dažādās platformās


MVVMCROSS risina zemas atmiņas situācijas dažādās platformās, nodrošinot mehānismus, lai saglabātu un atjaunotu ViewModels stāvokli, kas ir būtisks lietojumprogrammu stabilitātes saglabāšanai, kad atmiņa ir ierobežota. Lūk, kā tas pārvalda šīs situācijas dažādās platformās:

Pārskats par MVVMCROSS

MVVMCROSS ir savstarpēja platforma MVVM sistēma, kas atbalsta Windows Phone, Windows 8, iOS, Android un WPF lietojumprogrammas. Tas ļauj izstrādātājiem ieviest MVVM modeli šajās platformās, atvieglojot datu saistīšanos un bažu nodalīšanu [2] [5]. Framework izmanto portatīvo klases bibliotēku (PCL), lai House ViewModels, ļauj tos koplietot dažādās platformās [5].

Rīkošanās zemas atmiņas situācijām

Android **

Android operētājsistēmā MVVMCross saskaras ar izaicinājumiem platformas dzīves cikla un atmiņas pārvaldības dēļ. Android dzīves cikls var izraisīt situācijas, kad ViewModels netiek iznīcināts tūlīt pēc to saistīto uzskatu iznīcināšanas. Tas notiek tāpēc, ka Xamarin atkritumu savākšana var nenotikt uzreiz, it īpaši, ja atmiņas lietošana nav augsta [4]. Lai to pārvaldītu, izstrādātāji var izmantot tādus notikumus kā `ViewAppearing` un` ViewDisAppearing`, lai abonētu no ziņojumiem un nodrošinātu, ka tikai nepieciešamie ViewModels gadījumi paliek aktīvi [4].

iOS **

Kaut arī MVVMCROSS tieši netiek galā ar iOS specifiskiem brīdinājumiem par zemu atmiņu, izstrādātāji var ieviest platformas specifiskus risinājumus. Piemēram, .NET Maui lietotnē (kas pēc koncepcijas ir līdzīga dažādu platformu ietvariem, piemēram, MVVMCROSS), lietotnes deleģēt, lai sakoptu resursus [3], jūs varat ignorēt `ApplicationDidRecevemorywarning` [3]. Tomēr pati MVVMCROSS nenodrošina iebūvētu mehānismu, kā rīkoties ar šiem brīdinājumiem par iOS.

Windows Phone un citas platformas **

Windows Phone un citām platformām MVVMCROSS nodrošina vispārēju pieeju atmiņas pārvaldībai, ļaujot izstrādātājiem uzraudzīt lapas līmeņa notikumus, piemēram, `onnavigatedto` un` onnavigatedFrom`. Šos notikumus var izmantot, lai vajadzības gadījumā ieviestu pielāgotu loģiku resursu atbrīvošanai [8].

Saglabāt un atjaunot ViewModel stāvokli

MVVMCROSS nodrošina metodi ar nosaukumu “SavestatetObundle” klasē `MVXViewModel`, kas ļauj izstrādātājiem saglabāt savu skatuModeļu stāvokli, kad lietotne tiek apsponēta vai saskaras ar zemas atmiņas situācijām. Šo stāvokli var atjaunot vēlāk, kad lietotne tiek atsākta, nodrošinot, ka tiek saglabāts lietotāja progress [1]. Šī funkcija ir īpaši noderīga tādās platformās kā Android, kur lietotnes stāvokli var saglabāt un bieži atjaunot atmiņas ierobežojumu dēļ.

Rezumējot, lai gan MVVMCROSS nenodrošina katras platformas platformai raksturīgus zemas atmiņas apstrādes mehānismus, tas piedāvā rīkus, lai pārvaldītu ViewModel stāvokli un nodrošina ietvaru, kas ļauj izstrādātājiem ieviest pielāgotus risinājumus, pamatojoties uz katras platformas īpašajām vajadzībām.

Atsauces:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-with-xamarin-and-mvmcross
[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-apears-to-be-keep-hold-of-viewmodels-and-never-Disponsting-w
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[6.]
[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.hasaltaar.com.au/a-journey-of-hunting-memory-leaks-in-xamarin-2/