Android使用AsyncTask的最佳方式

时间:2012-12-21 17:12:16

标签: android

我一直在看这个指南:

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

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

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

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

由于

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

2 个答案:

答案 0 :(得分:2)

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

  1. 使用IntentService下载并存储/解析第一个文件。
  2. 使用IntentService读取第一次下载的结果,然后下载剩余的文件。如果需要,您可以在通知区域中使用进度条通知。同时,用户可以继续在应用中工作,甚至可以切换到其他应用,下载将继续。
  3. IntentService不受可能会杀死AsyncTask的Activity生命周期变化的影响。

    每次下载数据时,都要将其保存在某处。您始终可以检查数据是否过时。另一方面,如果没有连接,则用户拥有最后的“好”数据。

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

答案 1 :(得分:1)

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

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

如果您需要引用Download a file with Android, and showing the progress in a ProgressDialog,请提供有关使用活动ProgressBar下载文件的多种方法的示例。