【发布时间】:2014-11-09 01:44:50
【问题描述】:
我在我的活动中使用下载管理器来下载文件。我想使用广播接收器接收 ACTION_DOWNLOAD_COMPLETE 意图,并将下载请求的 id 与下载管理器设置的意图中的 id 匹配,以检查它是否是相同的下载。
有两种选择:
1) 通过制作意图过滤器并注册广播接收器来接收活动中的意图。这里的问题是广播接收器存在于活动中并被它破坏。因此,如果在 Activity 销毁之前没有完成下载,则无法接收 Intent。
this.downloadId = manager.enqueue(request);
downloadID 与onReceive 方法中intent 的EXTRA_DOWNLOAD_ID 进行比较,判断是否为同一次下载。可以在 onReceive 方法中访问 downloadId 变量。
2) 通过清单接收广播。这里的问题是 onReceive 方法无法访问活动中设置的 downloadId 变量。所以我无法检查下载是否是我需要的。
我做错了吗?基本上我想知道下载是否成功完成,即使下载开始的活动/服务被破坏。
我希望我的问题足够清楚。
【问题讨论】:
-
有什么建议吗?可以使用下载管理器完成吗?
-
如果活动可能没有运行,您必须将 ID 存储在其他位置。
-
你能举个例子吗?我应该将其存储在数据库中并检查意图中的 id 是否存在于数据库中?
标签: android broadcastreceiver android-download-manager