gpt4 book ai didi

java - Android - DownloadManager - 清除队列中的旧下载

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:06 25 4
gpt4 key购买 nike

我正在构建一个应用程序,出于并发原因需要知道所有下载是否已完成。某些功能只有在我的所有下载完成后才能启动。

我设法编写了一个检查旧下载队列的函数:

DownloadManager dm = (DownloadManager) context.getSystemService(context.DOWNLOAD_SERVICE);

Query q = new Query();
q.setFilterByStatus(DownloadManager.STATUS_FAILED|DownloadManager.STATUS_PENDING|DownloadManager.STATUS_RUNNING);

Cursor c = dm.query(q);

问题是 - 只是为了确定 - 在初始化时我想清理队列并删除所有条目。

关于我现在如何删除条目的任何想法?

This function对我不起作用,因为我不想物理删除文件...只是清空队列。

有什么想法吗?

最佳答案

您可以等待 DownloadManager 只完成您自己的下载吗?为此,您可以使用如下方式保存下载句柄:

List<Long> downloadIds = new ArrayList<>();
downloadIds.add(downloadManager.enqueue(request));

然后你可以这样查询downloadManager:

    Query q = new Query();
long[] ids = new long[downloadIds.size()];
int i = 0;
for (Long id: downloadIds) ids[i++] = id;
q.setFilterById(ids);
Cursor c = downloadManager.query(q);
Set<Long> res = new HashSet<>();
int columnStatus = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
while (c.moveToNext()) {
int status = c.getInt(columnStatus);
if (status != DownloadManager.STATUS_FAILED && status != DownloadManager.STATUS_SUCCESSFUL) {
// There is at least one download in progress
}
}
c.close();

请记住,如果您只对自己的下载感兴趣,而不是对系统范围内可能发生的所有可能下载感兴趣,则此方法可行。

希望这对您有所帮助。

关于java - Android - DownloadManager - 清除队列中的旧下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14897147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com