MVVMCROSS nodrošina, ka ziņojumi netiek zaudēti, lietojot `abrontonthreadpoolthread`, ieviešot rindas mehānismu. Kad jūs abonējat ziņojumus, izmantojot `abronbolthreadpoolthread`, visi ienākošie ziņojumi tiek rindā uz asinhronu apstrādi uz pavediena baseina pavediena. Šī pieeja garantē, ka ziņojumi tiek apstrādāti saņemtā secībā, pat ja ziņojumu izdevējs un abonents atrodas uz dažādiem pavedieniem.
Šeit ir detalizēts skaidrojums, kā tas darbojas:
1. Ziņojuma rinda: Kad tiek publicēts ziņojums un ir abonenti, kas izmanto `abrontonthreadpoolthread`, ziņojums tiek pievienots rindai. Tas nodrošina, ka ziņojumi netiek zaudēti, pat ja abonents nav uzreiz pieejams to apstrādei.
2. Vītņu baseina apstrāde: pēc tam rindā esošos ziņojumus asinhroni apstrādā ar pavedienu baseina pavedienu. Tas nozīmē, ka ziņojumi tiek apstrādāti bloķējošā veidā, neļaujot lietotāja saskarni vai izdevējam aizkavēties.
3. Apstrādes secība: ziņojumi tiek apstrādāti saņemtā secībā. Tas nodrošina, ka tiek saglabāta notikumu secība, kas ir būtiska, lai saglabātu lietojumprogrammas stāvokļa integritāti.
4. Vasas atsauces: Pēc noklusējuma MVVMCROSS abonementiem izmanto vājas atsauces, kas palīdz novērst atmiņas noplūdes. Tomēr, lietojot `abronesonthreadpoolthread`, ir svarīgi nodrošināt, lai abonementa marķieris tiktu pareizi saglabāts, lai neļautu abonementam priekšlaicīgi savākt atkritumus.
5. Abonēšanas žetoni: Abonējot, tiek atgriezts marķieris, kas jāuzglabā abonentam. Šo marķieri var izmantot, lai vēlāk abonētu no ziņojuma veida. Tokena glabāšana nodrošina, ka abonements paliek aktīvs, līdz tie ir skaidri abonēti.
Rezumējot, MVVMCROSS nodrošina, ka ziņojumi netiek zaudēti, lietojot `abrontonthreadpoolthread`, rindojot ziņojumus asinhronai apstrādei uz pavediena baseina pavediena, saglabājot apstrādes secību un izmantojot abonēšanas marķierus, lai efektīvi pārvaldītu abonēšanu. Šī pieeja ļauj efektīvi un uzticamu ziņojumu apstrādi dažādos lietojumprogrammas pavedienos.
Atsauces:[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://stackoverflow.com/questions/17324650/mvvmcross-multithreading-ins
[3] https://www.mvvmcross.com/documentation/fundamentals/data
[4] https://www.youtube.com/watch?v=HQDVRWWZKIK
[5] https://www.mvvmcross.com/documentation/advanced/customing-using-app-and-setup
[6] https://stackoverflow.com/questions/17602137/mvvmcross-how-does-this-view-get-the-to-the-viewmodel/17602246
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://diglib.tugraz.at/download.php?id=576a78335451d&location=browse
[9] https://stackoverflow.com/questions/37168519/alert-dialog-in-viewmodel-mvvmcross