AsyncTask,网络操作和超时

时间:2015-04-01 14:07:14

标签: android networking

我正在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秒,因为如果在联系服务器时出现问题则需要等待太长时间。

我应该采用另一种方式,而不是使用超时吗?

可能是我的理解被搁置,并且一旦到达服务器就会忽略超时。

1 个答案:

答案 0 :(得分:0)

联系服务器后,您几乎可以立即读取第一部分数据。转移超过1秒的线路可能是一个小问题。无论如何,超时不会在与活动的连接上触发,它意味着在停滞的连接上开始滴答。

请注意,5秒的超时是您的用户经常会遇到的情况,因此您必须正确处理该情况。要调试在超时时执行的分支,我建议暂时选择一个非常小的超时值,以便您可以轻松地重现异常。