UDP интенсивная связь в Android MVVM - PullRequest
0 голосов
/ 17 марта 2020

Итак, я разрабатываю приложение, которое требует постоянной связи UDP с сервером. Будут отправлены и получены кадры каждые 200-500 мс.

До сих пор я разработал следующую схему, но я не знаю, является ли это наилучшим подходом, и он на самом деле не работает идеально.

ФРАГМЕНТ A - LIVEDATA - VIEWMODEL A | <- EventBus -> ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ

ФРАГМЕНТ B - LIVEDATA - VIEWMODEL B | <- EventBus -> MAINACTIVITY

MAINACTIVITY --- LIVEDATA --- MAINACTIVITY VIEWMODEL <--- EventBus ---> Служба

Работает внутри потока, где выполняется следующее: - Два UdpServers (прослушивание на двух разных портах) - Два потока, один для опроса отправляющего PriorityQueue, один для опроса полученного PriorityQueue

В идеале система должна реализовать очередь с приоритетом и (сейчас это не работает ), проверьте наличие повторяющихся элементов в очередях, чтобы облегчить загрузку.

* Текущие проблемы: 1 - При обнаружении / отправке интенсивной нагрузки в очереди выдаются параллельные ошибки модификации. 2 - EventBus не имеет дело с большим количеством событий, генерируемых за короткий промежуток времени, события теряются. 3 - Архитектура недостаточно ясна.

Буду очень признателен за вашу помощь, поскольку мои основные сомнения заключаются в следующем, и я никуда не денусь: 1 - Как в идеале связать Сервис с Деятельностью, а затем с Фрагментами. Теперь viewmodel действия хранит данные (не постоянные, их нужно сохранять только до тех пор, пока пользователь не закроет приложение) и отправляет изменения во фрагменты через EventBus. 2 - Как обрабатывать потоки / Runnables и Queues / Polling.

Любая помощь действительно оценивается. Заранее спасибо и всего наилучшего!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...