2

我正在开发一个 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"));

上样用于启动下载,

4

1 回答 1

0

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

手动解决方案

转到设置-> 管理应用程序-> 下载管理器(在所有选项卡下)-> 清除数据

完成此操作后,您可以观察到成功率非常高。

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

更多信息:DownloadManager.ACTION_DOWNLOAD_COMPLETE 广播接收器在 Android 中多次接收相同的下载 id 并具有不同的下载状态

于 2013-12-17T09:34:49.973 回答