10

大约 3 年以来,我一直在使用DownloadManager API 来处理一个应用程序中的下载。最近我有一些 Android Pie 用户抱怨有时下载会在实际开始之前卡住几分钟,从而影响用户体验:他们中的一些人必须重新安装应用程序才能使其正常工作,而另一些人则随着时间的推移问题自行修复。请注意,我没有为 DownloadManager.Request 实例设置任何特殊设置(例如allowedNetworkTypes,、setRequiresCharging...)。

我对这个问题的理解是,请求在开始之前很长一段时间都停留在挂起暂停状态。没有注意到 SDK 28 中引入的任何重大变化,尽管这并不重要,因为我的目标是 API 级别 27。

有没有人经历过类似的事情并想出了一些解决方法?谢谢

4

1 回答 1

6

正如上面评论中提到的,清除下载管理器缓存和数据可以解决 Android 9 Pie 上的这个问题。要清除这些设置,您需要转到Apps & notifications,单击选项See all apps,点击右上角的选项菜单,选择Show systemDownload Manager从列表中选择,点击Storage,然后清除缓存和存储。

在解决此问题时,我发现在尝试使用 DownloadManager 将文件下载到公共目录时,如果使用了公共下载位置,则会将以下警告写入日志:

DownloadManager: Path appears to be invalid: /storage/emulated/0/Download/File Name

无论应用程序是否具有存储权限,都会出现此错误。但是,当检查文件是否在应用程序目录之外并且即使应用程序具有存储权限时也会运行时,它似乎是由isFilenameValidInExternalPackage()源代码)记录的错误警告。因此,即使在清除 DownloadManager 的缓存和存储之后,此错误警告仍会继续出现,尽管下载仍然有效。

编辑:这个问题似乎会定期出现。通常,强制停止下载管理器会暂时解决它。希望谷歌发布一个永久修复。

于 2018-10-27T21:38:05.133 回答