2011-09-27 78 views
10

我在爲Android編寫一個應用程序,讓用戶瀏覽文件列表並下載它們。 對於每次下載,我創建了一個線程,並使用HttpURLConnection實例下載文件(通過在while循環中讀取連接)。在Android應用程序中同時下載多個文件

這種方法適用於一個活動的下載。但是,當用戶啓動不止一個時,下載性能會急劇下降。大多數情況下,這些並行下載消耗了所有帶寬,用戶無法瀏覽文件(使用另一個HttpUrlConnection加載文件列表)。

關於改進下載系統的任何建議? 謝謝。

P.S .: Google Chrome和Firefox等流行瀏覽器的做法似乎不錯。任何人都知道他們如何工作

+0

你可以嘗試給下載線程數較低的優先級。 – vee

+0

這可能怎麼樣? – Sadjad

+0

Doc: http://developer.android.com/reference/java/lang/Thread.html#setPriority (int) 示例: http://stackoverflow.com/questions/5198518/whats-the-difference -this-thread-set-priority-and-android-os-process-setthrea – vee

回答

7

唉,我不知道一種方法來限制某些連接。但是,實際的做法是實施下載隊列以控制同時下載的數量。在你的情況下,你可能只想讓一次下載一件東西。這可以通過幾種不同的方式來實現。

這裏有一個方法與處理程序和尺蠖做到這一點:http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/

編輯1: 見老鼠的評論。一次最多可以下載2個線程可能會更聰明。

+7

我不會建議一次只下載一個數據流。如果一個數據流無法訪問,下載較慢或出現其他問題,則可能會發生問題。然後所有下載都必須等待這個完成或錯誤。 –

+1

@mice好點。 – Ian

相關問題