我正在从服务器下载一个大尺寸的zip文件。我被跟踪了
06-11 21:45:18.789: I/System.out(8993): java.net.SocketException: recvfrom failed: ETIMEDOUT (Connection timed out)
我的应用程序不会停止,但我的下载会停止。这种情况发生在hdpi android移动设备上,特别是低处理器设备。下载功能在S3和平板电脑上运行良好。我正在使用简单的FileOutputStream方法下载该文件。
发布于 2014-04-05 02:24:56
我想,你应该获得一个WakeLock来完成你的下载,然后发布它。特别是,如果你正在通过Wi-Fi连接下载一个大文件,通常需要购买一个WifiLock来保持无线电处于唤醒状态。
另一方面,您也可以(如果还没有)尝试一下DownloadManager。正如this official article on wakelocks所说,
如果您的应用程序正在执行长时间运行的HTTP下载,请考虑使用DownloadManager。
发布于 2013-06-12 18:35:50
如果使用的是HttpConnection,则增加超时
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setReadTimeout(10000 );
或
HttpConnectionParams.setSoTimeout(httpParameters,10000);//
发布于 2014-04-03 20:15:24
我不太确定这可能是问题所在,但这是有可能的。你说这发生在低处理器设备上,它可能发生在远程服务器的上行比特率太大以至于客户端的下行比特率无法处理它的情况下,当大文件发生这种情况时,在接收设备无法处理比特率一段时间后,Socket
崩溃,你得到超时。
我的建议是尝试实现一个带宽速率限制器。通过这种方式,您可以测试速度较慢的设备是否对那些长时间下载做出了更好的响应,尽管它们会更慢。
https://stackoverflow.com/questions/17049181
复制相似问题