MVVMCross zaisťuje, že správy sa nestratia pri používaní `subscriceonThreadpoolthread` implementáciou mechanizmu frontu. Keď sa prihlásite na odber správy pomocou „PridederonThreadPoolThread`, všetky prichádzajúce správy sa zaradia na asynchrónne spracovanie na vlákne vlákna. Tento prístup zaručuje, že správy sa spracúvajú v poradí, v akom sú prijaté, aj keď vydavateľ správy a predplatiteľ sú na rôznych vláknach.
Tu je podrobné vysvetlenie toho, ako to funguje:
1. Front Správa: Keď je správa zverejnená a existujú predplatitelia používajúcich „PridederonthReadpoolthread`, správa sa pridá do frontu. To zaisťuje, že správy sa nestratia, aj keď predplatiteľ nie je okamžite k dispozícii na ich spracovanie.
2. Spracovanie fondu vlákien: Správy vo fronte sú potom asynchrónne spracované vláknom vlákna. To znamená, že správy sa zaoberajú neblokujúcim spôsobom, čo zabráni oneskoreniu používateľského rozhrania alebo vydavateľovi.
3. Poradie spracovania: Správy sa spracúvajú v poradí, v akom boli prijaté. To zaisťuje zachovanie poradia udalostí, čo je rozhodujúce pre udržanie integrity štátu aplikácie.
4. Slabé referencie: MVVMCross v predvolenom nastavení používa slabé odkazy na predplatné, čo pomáha predchádzať úniku pamäte. Pri používaní `subscriceonThreadPoolThread` je však nevyhnutné zabezpečiť, aby sa token predplatného správne uložil, aby sa zabránilo predčasnému zhromaždeniu odberu.
5. Tokeny predplatného: Pri prihlásení sa vráti token, ktorý musí uložiť predplatiteľ. Tento token sa dá použiť na zrušenie odberu z typu správy neskôr. Uloženie tokenu zaisťuje, že predplatné zostane aktívne, kým sa výslovne zruší.
Stručne povedané, MVVMCross zaisťuje, že správy sa nestratia pri používaní „PodpriptiononThreadpoolThread“ frontom správ pre asynchrónne spracovanie na vlákne vlákna, udržiavanie poradia spracovania a použitím tokenov predplatného na efektívne spravovanie predplatných. Tento prístup umožňuje efektívne a spoľahlivé spracovanie správ v rôznych vláknach v aplikácii.
Citácie:[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://stackoverflow.com/questions/17324650/mvvmcross-Multithreading-ins-ins
[3] https://www.mvvmcross.com/documentation/funmamentals/data-binding
[4] https://www.youtube.com/watch?v=hqdvrwwzkik
[5] https://www.mvvmcross.com/documentation/advanced/custoughing-using-app-and-setup
[6] https://stackoverflow.com/questions/17602137/MVVMcross-how-does-his-view-get-get-t-the-the-viewModel/17602246
[7] https://www.mvvmcross.com/documentation/funmamentals/viewmodel-lifecycle
[8] https://diglib.tugraz.at/download.php?id=576a78335451d&location=browse
[9] https://stackoverflow.com/questions/37168519/alelert-dialog-in-viewmodel-mvvmcross