簡體   English   中英

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秒的線路可能會出現故障。 無論如何,超時將不會在與活動的連接上觸發,它的意思是在停滯的連接上開始計時。

請注意,用戶會經常遇到5秒鍾的超時,因此您必須正確處理此情況。 為了調試在超時時執行的分支,我建議暫時選擇一個非常小的超時值,以便您可以輕松地重現異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM