AsyncTask、网络操作和超时

AsyncTask, network operations and timeouts

我正在 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 秒的线路可能是故障。无论如何,超时不会在与 activity 的连接上触发,它意味着在停滞的连接上开始计时。

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