我想要與AsyncTask同時(同時)下載所有文件。使用AsyncTask MultiDownloading
我想弄清楚如何同時下載多個文件。我試圖在互聯網上搜索,但沒有發現任何東西,但發現在很多應用程序中這可以完成。
我也想提高我的應用程序(Android)的穩定性,以便每次執行或刷新UI不會減慢進程--->「滯後」。
請原諒我的英語,但不要說得很好。非常感謝您。
我想要與AsyncTask同時(同時)下載所有文件。使用AsyncTask MultiDownloading
我想弄清楚如何同時下載多個文件。我試圖在互聯網上搜索,但沒有發現任何東西,但發現在很多應用程序中這可以完成。
我也想提高我的應用程序(Android)的穩定性,以便每次執行或刷新UI不會減慢進程--->「滯後」。
請原諒我的英語,但不要說得很好。非常感謝您。
這樣創建您的下載任務:
public class NewspaperDownloader extends AsyncTask<Void, Void, File> {
URL urlToDownload;
public DownloaderTask(URL urlToDownload) {
this.urlToDownload = urlToDownload;
}
protected void onPreExecute() {
// prepare your download here
}
protected String doInBackground(Void... params) {
// do your download here
[...]
}
protected void onPostExecute(File downloadedFile) {
// Do something with the download
}
}
如果你不知道如何下載文件的AsyncTask在Android上,看看我的例子中我提供here。
最後打電話給你下載這樣的:
// Task 1
DownloadTask task1 = new DownloadTask(urlToDownload);
task1.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
// Task 2
DownloadTask task2 = new DownloadTask(urlToDownload);
task2.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
// Task 3
DownloadTask task3 = new DownloadTask(urlToDownload);
task3.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
UPDATE從列表
下載網址:
List<URL> urls = new ArrayList<URL>();
urls.add(...);
[...]
for(URL url : urls) {
DownloadTask task = new DownloadTask(url);
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
注意,使用AsyncTask
可能不會給你真正的並行性你需要。問題是,在Android的不同版本中,如果我沒有記錯的話,可以同時運行的AsyncTasks
的數量已從1更改爲5,然後回到1。查看此處:
這裏:
https://groups.google.com/forum/?fromgroups#!topic/android-developers/8M0RTFfO7-M
而且AsyncTasks
可能會被殺死或者可能甚至無法運行。這是因爲AsyncTasks
受到您無法控制的ThreadPool
的支持。如果AsyncTask
不符合您的需求,最好的解決方案是使用Services
或Loopers
或建立您自己的ThreadPoolExecutor
。
使用'executorOnExecutor'。對於平行執行task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,「http://url.com/image.png」)' – Raghunandan
你應該看看這個訓練練習(它與圖像做在一起,所以你必須適應它的文件但一般情況下,你指向正確的方向):http://developer.android.com/training/displaying-bitmaps/index.html –
你能解釋一個例子嗎?同時下載2個 –