2012-12-21 22 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