我正在尝试在我的Android应用中使用inputStream读取800ko的png图像。这是我的代码:
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-10KB / s
大约2分钟后,我的“仍在阅读”调试不再显示,但我仍处于while循环中。在设置了4分钟的超时后,我遇到了IO异常。
如果我下载图片,将其托管在我的Nginx服务器上,则可以正常工作。即使很慢,没有信息也不会停止阅读循环,我得到了我的图像。
那么,为什么is.read停止?我怎么看到它停止了? (无需在我的应用中创建备用超时)