在android下载大文件的最佳方法?

时间:2013-04-02 12:23:17

标签: android

我需要在我的应用程序上下载一个大文件(差不多2gb),我想知道最好的方法是什么,以及一些libs来帮助我。 首先我看了Android Asynchronous Http Library,但我没有找到显示如何发布进度或开始,暂停下载的示例。然后我不知道我是否应该使用这个lib或只是使用一个标准的http commons。 其他问题是,我应该使用service来下载我的文件吗?

你们可以提示,怎么做?

3 个答案:

答案 0 :(得分:11)

我看到你得到了一堆答案,但没有一个人从整体的角度来回答它。

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

考虑到Android平台的诀窍在于,因为这是一个漫长的操作,所以你根本不应该在活动生命周期中这样做。

说你有两个选择:

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

  • 另一种可能效果很好的方法,但我从未亲自使用过,就是使用自Gingerbread以来可用的DownloadManager。致电getSystemService(Context.DOWNLOAD_SERVICE)并致电dwManag.enqueue(dwRequest);

  • 应该不难
希望它有所帮助。

答案 1 :(得分:1)

如果你没有定位姜饼之前的设备,我建议你使用DownloadManager作为你所链接答案的第三个选项。它负责下载文件,在通知栏中显示进度,这样用户即使在您的应用程序进入后台后也可以看到正在发生的事情,并且您不必担心当用户进入时会发生什么进入另一个应用程序和Android决定杀死你的应用程序以释放内存。此外,它适用于“只能通过wifi下载文件”等功能,至少有一些Android版本具有这些功能。

答案 2 :(得分:0)

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