Sag*_*gar 7 android android-file android-download-manager
在我的应用程序中,有一些用户可以下载的文件.文件通过android下载管理器下载.但是,几周以来,数百名用户一直在抱怨他们的文件每8-12天自动删除一次,甚至没有他们卸载应用程序.(可能会有更多用户不愿意抱怨同样的问题.)
现在,可能存在许多用户特定的原因,为什么会在少数设备上发生这种情况.但考虑到大量的用户,似乎我可能做错了什么.
为什么系统/下载管理器会自动删除文件?有没有办法通知系统或下载管理器不删除某些文件?或者我应该在下载后重新命名文件,以便将它们与下载管理器取消链接,并希望问题能够解决?
编辑:
这是我用来下载文件的代码:
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(trackLink));
request.setTitle(trackTitle);
request.setDestinationInExternalPublicDir("Tracks", trackTitle + ".mp3");
request.setVisibleInDownloadsUi(false);
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)
我也遇到过这个问题.查看源代码DownloadIdleService似乎如果下载设置为在UI中不可见,则会在7天后将其删除,因为它们被视为"陈旧".这是来自的javadoc DownloadIdleService:
/**
* Remove stale downloads that third-party apps probably forgot about. We
* only consider non-visible downloads that haven't been touched in over a
* week.
*/
Run Code Online (Sandbox Code Playgroud)
从 Android Q 开始存在一个更大的问题,其中setVisibleInDownloadsUi设置的值被忽略,默认情况下为 false。这些文件将在一周后被删除。您可以通过以下方式进行测试:下载文件,将日历中的日期更改 2 个月,例如,在终端中调用:
adb shell cmd jobscheduler run -f com.android.providers.downloads -100
它从DownloadIdleService开始工作,其中旧的和禁止的文件被删除。您可以在 logcat(未设置过滤器)中看到 DownloadManager 尝试删除您的文件。
为了防止这种情况,您可以:
Environment#getExternalStoragePublicDirectory(String) with Environment#DIRECTORY_DOWNLOADS)- 这是从 Android Q 开始的唯一路径,下载可见且不应删除| 归档时间: |
|
| 查看次数: |
7221 次 |
| 最近记录: |