将变量从 "Activity" 发送到 "BroadcastReceiver."
Send a variable from a "Activity" to "BroadcastReceiver."
我需要将变量从 Activity
发送到在清单上注册的 BroadcastReceiver
。
我的场景:
我有一个用户可以下载的文件列表,当他点击应用程序时调用 DownloadManager
,并在数据库中放置一个标志“PENDENT”。此列表由 Activity
管理
在我的 AndroidManifest
中,我用过滤器 android.intent.action.DOWNLOAD_COMPLETE
注册了一个 BroadcastReceiver
,当我的 BroadcastReceiver
被调用时,我想从 "PENDENT" 更改这个寄存器到“已下载”。
观察:可能是我的方法不好,如果是这样,我接受建议。
提前致谢!
BroadcastReceiver 收到 Intent
。变量可以包含在 Intent
.
这是创建后台服务和传递 Intent
的指南。 https://developer.android.com/training/run-background-service/create-service.html
由 Activity 本身存储和管理您的文件列表可能不是最好的主意。将数据列表保存在与 Activity 和 BroadcastReceiver 分开的某些 class 中可能更安全——可能是某种将数据保存到文件系统的 IntentService。然后你的 Activity 和 BroadcastReceiver 都可以使用 IntentService 来管理数据。
你应该看看 downloadManager 在入队时返回的 downloadedId。你可以这样做:
long downloadId = manager.enqueue(request);
然后您可以将 downloadId 存储在您的数据库中,并且您可以通过查询您的数据以获取来自 onReceive 的 IntentExtras 的 downloadedId 来获取下载了哪个文件。您可以使用以下方式获取额外信息:
Bundle extras = intent.getExtras();
Long downloaded_id = extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID);
希望对您有所帮助。
我需要将变量从 Activity
发送到在清单上注册的 BroadcastReceiver
。
我的场景:
我有一个用户可以下载的文件列表,当他点击应用程序时调用 DownloadManager
,并在数据库中放置一个标志“PENDENT”。此列表由 Activity
在我的 AndroidManifest
中,我用过滤器 android.intent.action.DOWNLOAD_COMPLETE
注册了一个 BroadcastReceiver
,当我的 BroadcastReceiver
被调用时,我想从 "PENDENT" 更改这个寄存器到“已下载”。
观察:可能是我的方法不好,如果是这样,我接受建议。
提前致谢!
BroadcastReceiver 收到 Intent
。变量可以包含在 Intent
.
这是创建后台服务和传递 Intent
的指南。 https://developer.android.com/training/run-background-service/create-service.html
由 Activity 本身存储和管理您的文件列表可能不是最好的主意。将数据列表保存在与 Activity 和 BroadcastReceiver 分开的某些 class 中可能更安全——可能是某种将数据保存到文件系统的 IntentService。然后你的 Activity 和 BroadcastReceiver 都可以使用 IntentService 来管理数据。
你应该看看 downloadManager 在入队时返回的 downloadedId。你可以这样做:
long downloadId = manager.enqueue(request);
然后您可以将 downloadId 存储在您的数据库中,并且您可以通过查询您的数据以获取来自 onReceive 的 IntentExtras 的 downloadedId 来获取下载了哪个文件。您可以使用以下方式获取额外信息:
Bundle extras = intent.getExtras();
Long downloaded_id = extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID);
希望对您有所帮助。