Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Як mvvmcross гарантує, що повідомлення не втрачаються при використанні підписки


Як mvvmcross гарантує, що повідомлення не втрачаються при використанні підписки


MVVMCross гарантує, що повідомлення не втрачаються при використанні `Підписки, що підписується, шляхом реалізації механізму черги. Коли ви підписуєтесь на повідомлення за допомогою `Підписки, що підписуються, будь -які вхідні повідомлення в черзі для асинхронної обробки на потоці пулу. Такий підхід гарантує, що повідомлення обробляються в тому порядку, який вони отримали, навіть якщо видавець повідомлень та абонент перебувають на різних потоках.

Ось детальне пояснення того, як це працює:

1. Черга повідомлень: Коли публікується повідомлення, і є абоненти, які використовують `Підписку, що підписується, повідомлення додається до черги. Це гарантує, що повідомлення не втрачаються, навіть якщо абонент не одразу доступний для їх обробки.

2. Обробка пулу нитки: Потім повідомлення про чергу обробляються асинхронно ниткою пулу. Це означає, що повідомлення обробляються без блокуючих способів, заважаючи затримати інтерфейс користувача або видавця.

3. Порядок обробки: Повідомлення обробляються в тому порядку, який вони отримали. Це гарантує збереження порядку подій, що має вирішальне значення для збереження цілісності стану програми.

4. Слабкі посилання: За замовчуванням MVVMCross використовує слабкі посилання на підписки, що допомагає запобігти витоку пам'яті. Однак, використовуючи `підписку -ereadpoolthread`, важливо гарантувати, що маркер підписки належним чином зберігається, щоб запобігти передчасно передплати.

5. Підписи жетонів: При підписці повертається маркер, який повинен зберігатися абонент. Цей маркер може бути використаний для скасування підписки з типу повідомлення пізніше. Зберігання маркера гарантує, що підписка залишається активною до того, як явно не скасовано.

Підводячи підсумок, MVVMCross гарантує, що повідомлення не втрачаються при використанні `Підписки, що підписується, шляхом черги повідомлень для асинхронної обробки на потоці пулу потоку, підтримуючи порядок обробки та використання жетонів підписки для ефективного управління підписками. Такий підхід дозволяє ефективно та надійне обробку повідомлень у різних потоках у програмі.

Цитати:
[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-linked-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