0

Приложение к стеклу/Android постоянно получает данные с другого компьютера, используя TCP или UCP-соединение, а полученные данные используются для визуализации на лету.Как поддерживать определенный FPS для приложения при непрерывном получении данных для визуализации?

Мне интересно, как мы можем поддерживать определенный FPS (например, FPS 30), , а также стабильно и непрерывно получать данные.

Просто имея бесконечный цикл для передачи данных TCP, кажется, вызывает некоторые проблемы, такие как перегрев устройства и случайные остановки сети.

Так что в основном мне интересно, что лучше всего визуализировать GUI при обслуживании определенного FPS, а также непрерывно получать данные через Интернет.

Большое вам спасибо!

ответ

0

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

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