我正在我的應用程序中下載文件,並使用以下超時。可以setConnectionTimeout停止完成下載
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 5000);
現在,然後文件只是部分下載。如果在慢速移動網絡上5秒鐘內沒有完成,可以設置5秒的StopTimeout停止下載嗎?
從谷歌開發文檔,它說:
以毫秒爲單位的缺省套接字超時(SO_TIMEOUT),這是 等待數據的超時。
這是指等待第一個數據的時間,還是等待其他數據的時間? IE下載開始,但沒有進一步的數據到達5秒鐘。
編輯 我做了一個測試,我的SO_TIMEOUT減少到100毫秒NAD它在從僅完成一秒鐘後停止donwload沒有影響。
所以你說的是,如果文件下載沒有在5秒內完成,文件下載過程將被暫停?所以我將不得不將這個超時時間增加到10-20秒?或者有更好的方法來處理下載? – Rynardt
把SO_TIMEOUT設置爲0意味着無限等待,這對我來說應該是這種情況,因爲setConnectionTimeout負責建立連接或在適當的時候對其進行計時。 – Waqas
我從這裏得到了這個代碼在stackoverflow。當然,必須有一個理由來使用SO_TIMEOUT?編輯:我做了一些測試,並將SO_TIMEOUT更改爲100毫秒,完全沒有阻止完整下載後的下載。 – Rynardt