将变量从"Activity"发送到"BroadcastReceiver."



我需要从Activity发送一个变量到在Manifest上注册的BroadcastReceiver

我的场景:

我有一个文件列表,可以由用户下载,当他点击应用程序调用DownloadManager,并把一个标志"PENDENT"在数据库中。此列表由Activity

管理。

在我的AndroidManifest中,我已经用过滤器android.intent.action.DOWNLOAD_COMPLETE注册了BroadcastReceiver,当我的BroadcastReceiver被调用时,我想将此寄存器从"PENDENT"更改为"已下载"。

观察:也许我的方法不好,如果是这样,我接受建议。

提前感谢!

您应该看一下downloadManager在排队时返回的downloaddid。你可以这样做:

long downloadId = manager.enqueue(request);

然后你可以将downloaddid存储在你的数据库中,你可以通过查询onReceive的IntentExtras上的downloaddid的数据来获得哪个文件被下载。您可以使用

获取额外的信息:
Bundle extras = intent.getExtras();
Long downloaded_id = extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID);

BroadcastReceiver接收到一个Intent。该变量可以包含在Intent中。

下面是创建后台服务和传递Intent s的指南https://developer.android.com/training/run-background-service/create-service.html

由Activity本身存储和管理文件列表可能不是最好的主意。将数据列表保存在一些类中可能更安全,这些类与Activity和BroadcastReceiver分开——也许是某种IntentService,它将数据保存到文件系统中。然后你的Activity和BroadcastReceiver都可以使用IntentService来管理数据

相关内容

  • 没有找到相关文章

最新更新