Запросы DownloadManager отложены на Android Pie - PullRequest
0 голосов
/ 28 августа 2018

Я использую API DownloadManager для обработки загрузок в одном приложении в течение 3 лет. Недавно у меня было несколько пользователей Android Pie, которые жаловались на то, что иногда загрузка застревает на несколько минут перед тем, как они начнутся, что ставит под угрозу UX: некоторым пришлось переустанавливать приложение, чтобы они работали корректно, а другим - со временем проблема исправлялась. Обратите внимание, что я не установил никаких специальных настроек для экземпляров DownloadManager.Request (например, allowedNetworkTypes, setRequiresCharging, ...).

Мое понимание проблемы заключается в том, что запросы застряли в состоянии в ожидании или в режиме паузы на долгое время перед началом работы. Не заметил каких-либо значительных изменений в SDK 28, хотя это не важно, так как я нацелился на уровень API 27.

Кто-нибудь испытывал нечто подобное и придумал какие-то обходные пути? Спасибо

1 Ответ

0 голосов
/ 28 октября 2018

Как уже упоминалось в комментариях выше, очистка кэша диспетчера загрузки и данных решает эту проблему на Android 9 Pie. Чтобы очистить эти настройки, вам нужно перейти на Apps & notifications, щелкнуть опцию на See all apps, нажать меню параметров в правом верхнем углу, выбрать Show system, выбрать Download Manager из списка, нажать на Storage, затем очистите кеш и хранилище.

При устранении этой проблемы я обнаружил, что при попытке использовать DownloadManager для загрузки файла в общедоступный каталог в журнал было записано следующее предупреждение, если использовалось общедоступное местоположение для загрузки:

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

Эта ошибка появляется независимо от того, имеет ли приложение разрешение на хранение. Однако это ложное предупреждение, которое регистрируется isFilenameValidInExternalPackage() ( исходный код ) при проверке, находится ли файл за пределами каталога приложения и выполняется ли приложение, даже если приложение имеет разрешение на хранение. Таким образом, это ложное предупреждение продолжает появляться даже после очистки кэша и хранилища DownloadManager, хотя загрузка все равно работает.

Редактировать: эта проблема периодически повторяется. Как правило, принудительная остановка Download Manager разрешает ее временно. Надеюсь, Google выпустит постоянное исправление.

...