通过android下载管理器下载多个声音文件时,由os杀死的下载进程

时间:2013-08-06 14:03:22

标签: android download-manager

我正在开发一个Android应用程序,我必须从服务器下载多个声音文件。每个文件大小约为10MB。为此,我使用下载管理器从服务器下载多个文件。但是当我下载2或3个声音文件后,我从服务器下载进程下载多个文件被android os杀死。由于下载过程需要更多资源,因此设备上的另一个应用程序需要运行资源。我已经用谷歌搜索解决了这个问题,但无法得到任何关于我的问题的解决方案。如果有人解决了这个问题,那么请建议我,或者有任何例子或样品,那么请建议我。

以下是一些代码段,

Uri Download_Uri = Uri.parse(urls[idList.get(0)]);
    DownloadManager.Request request = new DownloadManager.Request(Download_Uri);
    long download_id = downloadManager.enqueue(request
                .setAllowedNetworkTypes(
                  DownloadManager.Request.NETWORK_WIFI
                | DownloadManager.Request.NETWORK_MOBILE)
                .setAllowedOverRoaming(false)
                .setTitle("Downloading...")
                .setDescription(Songs[idList.get(0)])
                .setDestinationInExternalPublicDir(
                    Environment.DIRECTORY_DOWNLOADS,
                    Songs[idList.get(0)] + ".mp3"));

上层示例用于启动下载

1 个答案:

答案 0 :(得分:0)

正如所讨论的here,下载管理器中存在一个错误。  由于网络连接问题,下载管理器将自动重新请求文件/跟踪失败。但是,当发出多个重复请求时,它无法提供服务。它在下载管理器应用程序缓存中存储有关失败或部分下载文件的数据。无论何时再次隐式下载,它都使用以前的数据,这对于进行一些范围请求是不准确的。这就是为什么它总是失败给出范围请求失败或错误无法在多次或重复下载后恢复。

手动解决方案

转到设置 - >管理应用程序 - >下载管理器(在所有标签下) - >清晰的数据

执行此操作后,您可以将成功率视为非常高。

为了通过代码清除下载管理器数据,您需要供应商密钥。

更多信息:DownloadManager.ACTION_DOWNLOAD_COMPLETE broadcast receiver receiving same download id more than once with different download statuses in Android