2012-12-21 18 views
0

我一直在尋找這個指南:Android的最好的方式來使用的AsyncTask

http://developer.android.com/training/basics/network-ops/connecting.html

,並想知道什麼是下載多個文件的最好方法。首先,我需要從網址下載文本文件以確定要下載哪些文件。

我應該有2個單獨的ASyncTasks,一個下載文件,然後另一個下載剩餘的文件?否則,我的代碼依賴於第一個文件崩潰,因爲異步任務沒有及時完成。

此外,對於進度對話,我應該爲每個文件製作一個新文件還是嘗試更新前一個文件?

感謝

Orginally我創建的每個文件下載新的AsyncTask。

+0

文本文件和其他文件存在於同一個URL? –

+0

如果您同時啓動多個異步任務,爲什麼不使用ExecutorService而不是AsyncTask –

+0

它們是多個文本文件,每個文件都具有不同的url – user557240

回答

2

一般情況下,如果你想將文件保留在設備上,而您是根據下載一個文件的結果下載多個文件,那麼你應該

  1. 使用IntentService下載和存儲/解析第一個文件。
  2. 使用IntentService讀取第一次下載的結果,然後下載其餘文件。如果需要,可以在通知區域中使用進度欄通知。同時,用戶可以繼續在應用程序中工作,甚至切換到其他應用程序,下載過程將繼續。

IntentService不受可能會終止AsyncTask的Activity生命週期更改的影響。

任何時候你下載數據,堅持它的地方。您可以隨時檢查數據是否過期。另一方面,如果沒有連通性,用戶擁有最後的「好」數據。請參閱Running in a Background Service。示例應用程序中的內容提供者說明了下載其他文件的「元數據」。該示例還演示瞭如何在下載之前檢查連接性。

+0

謝謝,我將在未來使用它。我已經設法修復了進度對話框中的錯誤。 – user557240

1

沒有完美的答案來涵蓋所有可能的情況。

  • 如果您對一個快速運行的AsyncTask感到滿意,請不要更改任何內容。
  • 如果您使用的是API 9+,則可以切換到DownloadManager類,並讓它鍛鍊其中的細節。

如果您需要參考,Download a file with Android, and showing the progress in a ProgressDialog提供了多種方式下載帶有活動ProgressBar的文件的示例。

+0

我想我會繼續AsyncTask,但進度對話框並沒有解僱,我基於我的代碼在這個http:// www。androidsnippets.com/download-an-http-file-to-sdcard-with-progress-notification 您是否有任何示例下載多個文件。 謝謝 – user557240