InputStream.read с медленным подключением Android - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь прочитать png-изображение 800ko с помощью inputStream в моем приложении для Android.Вот мой код:

URLConnection con = url.openConnection();
con.setConnectTimeout(240000);
con.setReadTimeout(240000);
InputStream is = con.getInputStream();
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = is.read(buffer)) != -1) {
    output.write(buffer, 0, bytesRead);
    Log.v("TagReadingFile", "still reading");
}
return output.toByteArray();

URL-адрес изображения, который я пытаюсь прочитать, размещен на сервере AmazonS3.Мое соединение с Android составляет около 5-10 КБ / с

Через 2 минуты моя отладка "Все еще читается" больше не отображается, но я все еще в цикле while.После 4-минутного тайм-аута, который я установил, я получил исключение ввода-вывода.

Если я загружаю картинку, размещаю ее на моем сервере nginx, он работает.Даже если это медленно, цикл чтения не останавливается без информации, и я получаю свое изображение.

Ну, а почему is.read останавливается?Как я могу увидеть это остановить?(без создания альтернативного таймаута внутри моего приложения)

...