gpt4 book ai didi

android - 下载管理器请求状态更改通知

转载 作者:行者123 更新时间:2023-11-29 21:58:19 25 4
gpt4 key购买 nike

我还没有找到任何相关信息。是否有可能以某种方式监听下载管理器请求状态的变化?我将几个文件排队等待下载,并将其显示在具有下载状态的列表中。我只在 DownloadManager.ACTION_DOWNLOAD_COMPLETE 上收到广播,但我想收到一些通知或设置一些监听器,以便我能够跟踪下载请求更改。我想要显示状态 - 添加到队列、正在下载、已下载...

我看到的唯一方法是查询 downloadmanager 并检查有关状态的每个请求,但我需要在 listadapter getview 方法中执行此操作并且效率不高。

最佳答案

根据官方文档,没有一个好的方法可以做到这一点。 http://developer.android.com/reference/android/app/DownloadManager.html

我建议启动一个服务或某种后台线程,每隔几秒查询一次您的下载状态。(在 long[] 中跟踪他们的 id,因为 setFilterById 需要 long[])

long[] ids = new long[MyDownloadQueue.length];
// Look at all these requests I'm building!
ids[i++] = dm.enqueue(request);

Cursor cursor = dm.query(new DownloadManager.Query().setFilterById(ids));
while (cursor.moveToNext()) {
int columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS);
int status = cursor.getInt(columnIndex);
int columnReason = cursor.getColumnIndex(DownloadManager.COLUMN_REASON);
int reason = cursor.getInt(columnReason);
// your stuff here, recording the status and reason to some in memory map
}

这样您的 ListView 就不必做任何工作,用户界面将保持流畅。然而,我确实没有更好的方法,抱歉我无法提供不涉及查询的答案。

关于android - 下载管理器请求状态更改通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12635310/

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