我从我的网站下载多个文件来更新应用程序,下载很好但是当有多个更新时,它会立即下载所有文件。我想在第一次下载完成后才下载第二个,我该怎么做呢?
这是他们的下载方式
if (!fullyUpdated) {
// upadateTextFile(array);
array.remove(0);
array.removeAll(arrayUpdated);
System.out.println("Result: " + array);
for (Double num : array) {
download("http://xxxxxxxxxxxx.com/updates/" + num + ".zip", num);
}
}
和
public void download(String address, Double num) {
progressBar.setValue(0);
try {
DownloadTask task = new DownloadTask(this, address, num);
task.addPropertyChangeListener(this);
task.execute();
} catch (Exception ex) {
System.out.println("Error");
}
}
这是DownloadTask文件 http://pastebin.com/UV9c4vnK 和HTTPDownloadUtil http://pastebin.com/TcPRw2eD
答案 0 :(得分:1)
您正在执行特定线程中的每个下载。它们都以异步方式工作。您应该将foreach循环移动到WorkerThread的doInBackground方法中。否则,为num。
中的每个元素启动一个Thread您应该将Double-Array添加到DownloadTask的构造函数中,而不是单个Double-Value。
答案 1 :(得分:1)
您的下载在另一个Thread中执行,这会导致数据同时下载。
将线程管理委托给 SwingWorker ,这是由DownloadTask扩展的类。
要阻止 SwingWorker 在后台下载,您可以尝试删除 SwingWorker 扩展,删除覆盖注释,更改 doInBackground 的名称方法并让他包含完成方法(你将不再需要这个回调)。