在没有下载管理器或第三方库的情况下加载连接不良的文件

时间:2016-01-12 09:01:38

标签: android download android-download-manager

我写了一些库,有时它应该加载3-5Mb文件。 我试图使用HttpURLConnection,但如果连接从最后一个地方丢失,我就无法恢复下载。 我也尝试过DownloadManager,但它需要DOWNLOAD_WITHOUT_NOTIFICATION,这是不可接受的。没有它,它会在右上角显示加载图标,这也是不可接受的。 我也不能使用第三方库。

是否有任何代码示例如何强制在不良连接(EDGE,重载服务器)或其他一些我可以集成的代码的开源库上工作HttpURLConnection?

1 个答案:

答案 0 :(得分:1)

看看Volley。它允许请求的自定义重试策略。您可以使用{{1}}实例化自定义DefaultRetryPolicy并将其设置为您的请求。

小心,因为Volley将整个下载的块缓存在内存中。

可能还有其他库,所以在推出自己的解决方案之前请先检查它们。

如果没有其他方法可以满足您的需求,您可以将HTTPUrlConnection流传输到文件流并在下载时写入。您需要编写逻辑代码来自行管理下载状态。首先,您需要事先知道要下载的文件大小(如果您的服务器向您发送“Content-Length”标题),并且要恢复部分失败的下载,您将打开与同一文件的新连接并从使用http范围的最后一个下载字节。