我正在AsyncTask上执行网络操作;
try {
int timeOut = 5000;
httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, timeOut);
client = new DefaultHttpClient(httpParameters);
request = new HttpGet(URL);
response = client.execute(request);
in = null;
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
line = in.readLine();
} catch (Exception e) {
return "ERROR CONNECTING TO SERVER";
}
我正在努力应对超时和缓慢的连接。
如果检索数据的时间超过5秒,那么我将收到超时异常。 据我所知,如果任务没有在5秒内完成,那么它将会超时,但如果它已联系服务器,并且当前正在下载需要5秒以上下载的数据,那该怎么办呢。
我不希望将超时设置为20秒,因为如果在联系服务器时出现问题则需要等待太长时间。
我应该采用另一种方式,而不是使用超时吗?
可能是我的理解被搁置,并且一旦到达服务器就会忽略超时。
答案 0 :(得分:0)
联系服务器后,您几乎可以立即读取第一部分数据。转移超过1秒的线路可能是一个小问题。无论如何,超时不会在与活动的连接上触发,它意味着在停滞的连接上开始滴答。
请注意,5秒的超时是您的用户经常会遇到的情况,因此您必须正确处理该情况。要调试在超时时执行的分支,我建议暂时选择一个非常小的超时值,以便您可以轻松地重现异常。