USBRequest возвращается в потоке пользовательского интерфейса? - PullRequest
0 голосов
/ 05 июня 2018

Я пишу приложение для Android, которое связывается с USB-устройством в режиме OTG, поэтому телефон является главным, а устройство - подчиненным.Я прочитал документацию по Android USB Communication и просмотрел несколько примеров в Интернете.С помощью приведенного ниже кода я хочу отправить буфер на USB-устройство и ожидать от него ответа.

doAsync {
    val request = UsbRequest()
    request.initialize(usbConnection, usbReadEndpoint)

    request.queue(byteBuffer)

    if (usbConnection?.requestWait() === request) {
        SOME CODE WITH BREAKPOINTS
    }
}

Когда я отлаживаю это, я устанавливаю точку останова внутри предложения if, чтобы увидеть, когда ответ назапрос прибыл.Когда я выполняю этот код, точка останова никогда не срабатывает немедленно и не прибывает, если я не сделаю что-то extra .

Под дополнительным я имею в виду следующее.В упражнении, где я запускаю этот код, есть RecyclerView.Содержит предмет.Когда я нажимаю на нее физически, достигается точка останова внутри предложения if.Если я этого не сделаю, ничего не случится.Кроме того, нажатие кнопки «Назад» для возобновления действия приводит к достижению точки останова в предложении if.Интересно, что эта точка останова срабатывает еще до того, как будет выполнен любой другой код в действии (я знаю это, потому что я также установил и другие точки останова).

Мой вопрос: почему это происходит?Почему мой запрос поступает только тогда, когда я что-то делаю в пользовательском интерфейсе или перезапускаю действие?Это действительно то, что происходит, или я что-то здесь упускаю?Как мне сделать «здоровый» requestWait () для получения данных, когда я этого хочу?

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