2016-02-28 54 views
0

我正在从我的网站下载多个文件来更新应用程序,下载是好的,但是当有多个更新它一次下载它们。我想只下载第一个下载完成后的第二个,我该如何解决这个问题?java下载文件,防止第二次下载,直到第一次完成

这是他们如何下载

 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

回答

1

您正在执行每次下载特定线。它们都以异步方式工作。您应该将foreach循环移动到WorkerThread的doInBackground方法中。否则,为num中的每个元素启动一个线程。

您应该将Double-Array添加到DownloadTask的构造函数中,而不是单个Double-Value。

+0

谢谢,这解决了它 –

1

您的下载在另一个Thread中执行,这会导致数据同时下载。

线程管理委托给SwingWorker,该类由DownloadTask扩展。

为了防止SwingWorker的在后台下载,你可以尝试删除的SwingWorker扩展,去除覆盖批注,改变doInBackground方法的名字,使他包括完成方法(你赢了”不再需要这个回调)。

相关问题