我正在开发一个应用程序,我正在开发的功能之一就是下载一些二进制文件。其中一些非常大(超过几兆字节)。只要文件大小小于2 GB,下载工作就会顺利完成。DownloadManager下载超过2.1 GB的文件
我被困在3.2GB的文件中,因为我得到了进度更新(我在为进度更新汇集DownloadManager),但是当下载完成时,文件不存在于目标文件路径中。询问该DownloadManager
该下载ID,我得到STATUS_FAILED
和原因ERROR_UNKNOWN
- 人们会希望的最喜欢的错误细节!
奇怪的是,这出现在大多数设备上,但对于一些(如三星SG 4活动OS 4.2.2和LG Nexus 5 OS 4.4.2),它不会出现。
做了一些额外的调查,我发现这似乎是一个bug in Android DownloadManager
implementation。看起来Android实现将下载计数存储为int,但是当该计数超过Integer.MAX_VALUE
时,下载将以失败结束。
我想更换DownloadManager
使用与前台服务,但我不会轻言放弃....
难道你们面对这个如果是这样,你怎么解决? 4.2.2之前是否有任何解决方法可以使用DownloadManager
,因此我可以下载每个文件超过2.1 GB的内容?
检查出Koush的Ion:https://github.com/koush/ion它非常好,它可能适用于大型文件 – josebama
@josebama:是从UI中释放的实际下载?我的意思是,如果用户旋转设备,退出应用程序,然后重新进入,下载是否继续并与整个UI保持一致? – gunar
我无法确认,但它应该是 – josebama