Почему мое Android приложение Bluetooth иногда не получает сообщений в течение некоторого времени? - PullRequest
0 голосов
/ 29 января 2020

Я немного изменил пример чата Android Bluetooth и заметил странные задержки в получении сообщений. Моя настройка:

  • Одна сторона (A) отправляет 10 сообщений в секунду.
  • Затем другая сторона (B) получает сообщения и измеряет разницу во времени между ними.

Они поступают через регулярные интервалы: для каждой выборки из 100 сообщений наибольшее измеренное время разница всегда ниже 150 мс. Пока все хорошо.

Теперь B также отправляет одно сообщение. На некоторых устройствах через несколько секунд B получает сообщения от A с большой задержкой. В течение 500-1000 мс ничего не будет, тогда отложенные сообщения будут быстро приходить друг за другом. Из 100 сообщений будет 3-6 таких задержек.

Теперь, если B также время от времени отправляет сообщения (один раз в секунду), эта проблема не возникает. Кроме того, это не произойдет, если B никогда не отправит сообщение. Я протестировал несколько планшетов, и не все показывают эту проблему. Я замечаю это с планшетами Samsung и Huawei с Android 8 или 9, но я думаю, что этого не происходит с планшетами Nexus 7 или Sony с Android 5 и 6.

Это выглядит мне немного похоже драйвер Bluetooth будет go время от времени спать, но только после того, как устройство отправит сообщение. Кто-нибудь еще заметил такое поведение, и нашли ли вы лучшее решение, чтобы избежать этих задержек?

(Мое приложение - это пример Android Bluetooth-чата, только что измененный для непрерывной отправки сообщений с определенным интервалом в течение sh кнопки.)

...