0

我一直在看这个指南:

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

并且想知道下载多个文件的最佳方式是什么。首先,我需要从 url 下载一个文本文件以确定要下载哪些文件。

我是否应该有 2 个单独的 ASyncTask,一个用于下载文件,另一个用于下载其余文件?否则我的依赖于第一个文件的代码会崩溃,因为异步任务没有及时完成。

另外对于进度对话框,我应该为每个文件创建一个新文件还是尝试更新前一个文件?

谢谢

最初我正在为每个要下载的文件创建一个新的 AsyncTask。

4

2 回答 2

2

一般来说,如果您希望文件保留在设备上,并且根据下载一个文件的结果下载多个文件,那么您应该

  1. 使用 IntentService 下载和存储/解析第一个文件。
  2. 使用 IntentService 读取第一次下载的结果,然后下载剩余的文件。如果需要,您可以在通知区域中使用进度条通知。同时,用户可以继续在应用程序中工作,甚至切换到另一个应用程序,下载将继续。

IntentService 不受可能杀死 AsyncTask 的 Activity 生命周期更改的影响。

每当您下载数据时,请将其保存在某个地方。您可以随时检查数据是否已过时。另一方面,如果没有连接,用户将拥有最后的“好”数据。

要了解有关 IntentService 的更多信息,请参阅在后台服务中运行。示例应用程序中的内容提供程序说明了下载其他文件的“元数据”。该示例还演示了如何在下载前检查连接。

于 2012-12-21T18:46:03.610 回答
1

没有完美的答案可以涵盖所有可能的情况。

  • 如果您对快速运行的 AsyncTask 感到满意,请不要更改任何内容。
  • 如果您使用的是 API 9+,您可以切换到该DownloadManager课程并让它锻炼细节。

如果您需要参考,使用 Android 下载文件,并在 ProgressDialog 中显示进度,提供了使用活动 ProgressBar 下载文件的多种方法的示例。

于 2012-12-21T17:17:48.610 回答