我正在使用 Android DownloadManger System Service 通过以下方式下载一些文件
dwnId = mgr.enqueue(new DownloadManager.Request(serveruri)
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle(getAlbumName())
.setDescription(getTrackName())
.setDestinationUri(deviceUri)
.setShowRunningNotification(true));
mgr
下载管理器实例在哪里,dwnId
是返回的唯一 ID。我也在注册ACTION_DOWNLOAD_COMPLETE
registerReceiver(onDownloadComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
在 onDownloadComplete BroadcastReceiver 的 onReceive() 方法中,我得到了下载 ID
Long dwnId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
之后,我正在向下载管理器查询下载状态
Cursor c = downloadManager.query(new DownloadManager.Query().setFilterById(dwnId)); c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
对于 DownloadManager.STATUS_* 常量。
问题是我两次收到相同的 downId(意味着 onReceive 方法被调用两次),一次是 DownloadManager.STATUS_SUCCESSFUL 状态,一次是相同 dwnId 的 DownloadManager.STATUS_FAILED 状态。我正在发出一次下载大约 10 个文件的请求,但在设备下载管理器上,它在通知栏左上角的意思中显示下载计数为 12 或 13。我认为下载管理器在下载文件时出现问题并恢复或自动重新启动以再次下载相同的文件。这就是为什么我请求下载的文件数量与下载队列中的实际数量之间存在差异的原因。因此,只有我两次获得相同的 DownloadId 完成操作。如果这是真的,如何限制它。我错了可能是我要求实际下载的计数差异的原因吗?为什么广播接收器两次收到相同的下载 ID。有人可以告诉我吗?
提前致谢...