我还没有找到任何相关信息。 是否有可能听取downloadmanager请求状态的变化? 我排队下载几个文件,然后在列表中显示下载状态。我只在DownloadManager.ACTION_DOWNLOAD_COMPLETE上收到广播,但我想收到一些通知或设置一些监听器,这样我就可以跟踪下载请求的变化。我想显示状态 - 添加到队列,下载,下载...
我看到的唯一方法是查询downloadmanager并检查关于状态的每个请求,但我需要在listadapter getview方法中执行它并且效率不高。
答案 0 :(得分:2)
根据官方文件,没有一种好方法可以做到这一点。 http://developer.android.com/reference/android/app/DownloadManager.html
我建议启动服务或某种后台线程,每隔几秒查询一次下载状态。 (在long []中跟踪它们的id,因为setFilterById需要很长的[])
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
}
这样您的列表视图就不必进行任何工作,UI将保持流畅。然而,我知道并没有更好的方法,抱歉,我无法提供不涉及查询的答案。