Как разблокировать InputStream.read () на Android?

, у меня есть поток, в котором метод read () для InputStream вызывается в цикле. Когда больше нет байтов для чтения, поток будет заблокирован до тех пор, пока не появятся новые данные.

Если я вызову close () в InputStream из другого потока, поток получит закрыто, но заблокированный вызов read () по-прежнему остается заблокированным. Я бы предположил, что метод read () теперь должен возвращать значение -1 , чтобы указать конец потока, но это не так. Вместо этого он остается заблокированным еще несколько минут, пока не истечет тайм-аут TCP.

Как мне разблокировать вызов close () ?

Изменить:

По-видимому, обычная JRE выдаст сообщение SocketException немедленно, когда поток или сокет блокирует read ()Вызов соответствует is close () 'd. Однако среда выполнения Android Java, которую я использую, не будет.

Мы будем очень благодарны за любые подсказки по решению для среды Android.

7
задан tajmahal 5 July 2011 в 14:56
поделиться