web-dev-qa-db-ja.com

DownloadManagerリクエストがAndroid Pieで遅延

DownloadManager APIを使用して、1つのアプリでのダウンロードを約3年間処理しています。最近、Android Pieを使用しているユーザーがいて、ダウンロードが実際に開始する前にダウンロードが数分間止まってしまい、UXが損なわれる場合があります:一部のユーザーはアプリを再インストールして正しく機能させる必要がありました。他のユーザーは時間の経過とともに問題を自動的に修正しました。DownloadManager.Requestインスタンスに特別な設定を行っていないことに注意してください(例:allowedNetworkTypessetRequiresCharging、...)。

問題についての私の理解は、リクエストが開始する前に長時間 保留中 または 一時停止中 ステータスでスタックすることです。 SDK 28で導入された重要な変更に気付きませんでしたが、私はAPIレベル27を対象としているため、重要ではありません。

誰かが同様のことを経験し、いくつかの回避策を考え出しましたか?ありがとうございました

8

上記のコメントで述べたように、ダウンロードマネージャーのキャッシュとデータをクリアすると、この問題は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のキャッシュとストレージをクリアした後でも、この誤った警告が引き続き表示されます。

編集:この問題は定期的に再発するようです。通常、ダウンロードマネージャーを強制停止すると、一時的に解決します。うまくいけば、Googleは恒久的な修正をリリースします。

4
Soren Stoutner