5

我需要在我的应用程序上下载一个大文件(几乎 2gb),我想知道最好的方法是什么,以及一些可以帮助我的库。首先,我查看了Android 异步 Http 库,但没有找到显示如何发布进度或开始、暂停下载的示例。然后我不知道我应该使用这个库还是只使用标准的 http commons。另一个问题是,我应该使用服务来下载我的文件吗?

各位大神能指点一下,怎么做?

4

3 回答 3

13

我看到你得到了一堆答案,但没有一个是从整体的角度真正回答的。

要下载 2k 或 2gb 文件,实际代码是相同的,使用某种类型的连接处理程序和某种类型的输入流和输出流,并且通常用缓冲输入流包装输入流。为此,您可以在网络上找到无数的 java 示例。

考虑到 Android 平台,这里的技巧是因为它是一个冗长的操作,所以您根本不应该在活动生命周期内执行它。

说你有两个选择:

  • 正如您建议的那样,您可以创建一个服务,我建议您使用IntentService 因为它似乎非常适合这种情况。IntentService 自动跨越一个新线程,通过您将 URL 作为字符串传递的意图并让服务使用流下载等。

  • 另一种可能效果很好但我从未亲自使用过的方法是使用自 Gingerbread 以来可用的DownloadManagergetSystemService(Context.DOWNLOAD_SERVICE)打电话和打电话应该不难dwManag.enqueue(dwRequest);

希望能帮助到你。

于 2013-04-02T12:38:53.807 回答
1

如果您不针对前姜饼设备,我会DownloadManager按照您链接到的答案中的第三个选项的建议使用。它负责下载文件,在通知栏中显示进度,以便用户即使在您的应用程序进入后台后也可以看到正在发生的事情,而您不必太担心用户离开时会发生什么进入另一个应用程序,android 决定终止您的应用程序以释放内存。此外,它还具有“仅通过 wifi 下载文件”之类的功能,至少某些 android 版本具有这些功能。

于 2013-04-02T12:31:07.317 回答
0

我建议你使用 adm 下载管理器。即使没有网络,下载也不会失败,速度也最好。

于 2013-08-28T16:47:46.233 回答