[英]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.