MVVMCross zajišťuje, že zprávy se neztratí při použití `AbsontimThreadPoolThread` implementací mechanismu fronty. Když se přihlásíte k odběru zpráv pomocí `AbcribeOnthreadPoolThread`, všechny příchozí zprávy jsou pro asynchronní zpracování ve frontě ve frontě na vlákno vlákna. Tento přístup zaručuje, že zprávy jsou zpracovávány v pořadí, které jsou přijata, i když vydavatel zpráv a předplatitel jsou na různých vláknech.
Zde je podrobné vysvětlení, jak to funguje:
1. Frorace zpráv: Když je zpráva zveřejněna a předplatitelé používají `předplaťte na odběru, je zpráva přidána do fronty. Tím je zajištěno, že zprávy nejsou ztraceny, i když předplatitel není okamžitě k dispozici pro jejich zpracování.
2. Zpracování fondu vláken: Zprávy ve frontě jsou poté asynchronně zpracovávány podprocesem fondu vlákna. To znamená, že zprávy jsou zpracovávány neblokovacím způsobem, což brání zpoždění uživatelského rozhraní nebo vydavatele.
3. Pořadí zpracování: Zprávy jsou zpracovány v pořadí, v jakém byly přijato. Tím je zajištěno, že pořadí událostí je zachováno, což je zásadní pro udržení integrity stavu aplikace.
4. Slabé odkazy: MVVMCross ve výchozím nastavení používá slabé odkazy pro předplatné, což pomáhá předcházet únikům paměti. Při použití `AdbcribeOnthreadPoolThread` je však nezbytné zajistit, aby byl token předplatného správně uložen, aby se předčasné předplacení předplacené předplatné předplaceno.
5. Tokeny předplatného: Při předplacení se vrátí token, který musí předplatitel uložit. Tento token lze použít k odhlášení z typu zprávy později. Uložení tokenu zajišťuje, že předplatné zůstává aktivní, dokud není výslovně odhlášeno.
Stručně řečeno, MVVMCross zajišťuje, že zprávy se neztratí při použití `předplatného přítvornéhoPoolThread` fronty pro asynchronní zpracování na vláknu vlákna, udržování pořadí zpracování a používání tokenů předplatného pro efektivní řízení předplatných. Tento přístup umožňuje efektivní a spolehlivé zpracování zpráv napříč různými vlákny v aplikaci.
Citace:[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-binding
[4] https://www.youtube.com/watch?v=hqdvrwwzkik
[5] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[6] https://stackoverflow.com/questions/17602137/mvvmcross-how-does-this-View-Get-linkhed-to-theewModel/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