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



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

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

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

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

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

如果没有其他适合您的需求,您可以将HTTPUrlConnection流管道传输到文件流,并在下载时进行编写。您需要对逻辑进行编码,以便自己管理下载状态。首先,您需要提前知道要下载的文件的大小(如果您的服务器向您发送"内容长度"标头),并且要恢复部分失败的下载,您需要打开到同一文件的新连接,并使用http范围从最后下载的字节请求。

相关内容

最新更新