Как остановить поток, который приостановлен на чтение Bluetooth - PullRequest
0 голосов
/ 15 сентября 2011

Мое приложение отображает данные из непрерывного потока ввода текста Bluetooth.

В Android 2.3.4, если я закрываю сокет, чтение сразу вызывает исключение ввода-вывода.В 2.2 это происходит только большую часть времени.

Я пытаюсь остановить чтение, когда вызывается onStop ().Затем в onStart () я переподключаюсь.

Есть ли лучший способ убить поток, приостановленный при чтении inputStream, который, вероятно, будет работать над всеми версиями?

1 Ответ

0 голосов
/ 17 сентября 2011

Я попытался прервать задачу и увяз в нескольких типах исключений, в зависимости от того, что он делал во время прерывания, и получал ошибки компиляции, которые я ловил, исключения, которые, по его словам, не могли быть выброшены. Даже когда я получил некоторый рабочий код, у него все еще были проблемы с надежностью на Froyo (Galaxy S - Vibrant).

Итак, я сделал резервную копию и попытался использовать InputStream.available в цикле с коротким сном и проверкой флага, установленного для завершения задачи чтения (так что задача никогда не приостанавливалась, кроме как в спящем режиме). Это отлично работает на различных версиях Android.

Кажется, уловка заключается не в том, чтобы внешне остановить поток, а в том, чтобы он обнаружил необходимость выйти и вернуться самостоятельно.

Кажется, что-то вроде клочья, вроде опроса чтения. Но код теперь стабилен, и производительность телефона, похоже, не страдает.

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