2013-04-02 107 views
2

我需要在我的应用程序(几乎2GB)下载一个大文件,我想知道什么是最好的方式来做到这一点和一些库来帮助我。 首先,我看了Android Asynchronous Http Library,但没有找到示例显示如何发布进度或开始,暂停下载。然后我不知道应该使用这个lib还是只使用一个标准的http commons。 其他问题是,我应该使用service下载我的文件?在android下载大文件的最佳方式是什么?

难道你们给一个提示,那怎么办?

回答

9

我已经看到你有一大堆的答案,并没有一个确实解决了它从一个整体的角度。

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

这里的窍门考虑Android平台是因为它是一个冗长的操作,你不应该这样做活动的生命周期内都没有。

说你有两个选择:

  • 如你所说,你可以创建一个服务,我会建议你使用IntentService ,因为它似乎是对这种情况下的理想选择。该IntentService自动跨越一个新的线程,通过意图传递URL作为一个字符串,并使用流,让该服务下载等

  • ,可能很好地工作的另一种方法,但我从来没有亲自使用,是使用自姜饼以来可用的DownloadManager。它不应该是很难叫getSystemService(Context.DOWNLOAD_SERVICE),并呼吁dwManag.enqueue(dwRequest);

希望它帮助。

1

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

0

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

+3

下载管理器不支持HTTP重定向状态码(这正是我的情况)的响应。 –

相关问题