将数据从 BroadCastReceiver 发送到正在运行的服务 (Android)

Posted

技术标签:

【中文标题】将数据从 BroadCastReceiver 发送到正在运行的服务 (Android)【英文标题】:Send data from BroadCastReceiver to running Service (Android) 【发布时间】:2012-05-25 14:31:42 【问题描述】:

如何将一些数据从 BroadCastReceiver 发送到正在运行的服务? 我尝试使用 peekService 但似乎该方法返回 null 直到服务被某人绑定。无论如何,如果我绑定服务,我不需要窥视服务,也无法从 BroadCastReceiver 绑定服务(我不需要任何 Activity)

我的情况是: my_broadcastreceiver -> 启动服务 my_broadcastreceiver -> 停止服务 my_broadcastreceiver -> 通知服务(如果服务已经在运行,否则什么都没有)

我该怎么做? 显然,我可以使用意图过滤器在服务中编写 BroadCastReceiver,但我认为这不是更好的方法。我只想在 BroadCastReceiver 进入 onReceive 方法时发送一些信息。我希望有一些可能...

问候

【问题讨论】:

【参考方案1】:

将数据打包到Intent 并使用startService() 将其发送到服务。见putExtra()

【讨论】:

另外,如果服务没有运行,我不会启动它! 我也对此感兴趣。如果有人有解决方案,请分享。 @user1417608, "如果此服务尚未运行,它将被实例化并启动(如果需要为它创建一个进程);如果它正在运行,则它保持运行。"来自 android 手册。

以上是关于将数据从 BroadCastReceiver 发送到正在运行的服务 (Android)的主要内容,如果未能解决你的问题,请参考以下文章

将 BroadcastReceiver 用于推送通知时不会被调用

如何从 BroadcastReceiver 在 Activity 中发送和保存字符串消息

Android:从 BroadcastReceiver 事件发送 LocalBroadcastManager 的意图

android从broadcastreceiver刷新listview

从AppWidgetProvider到Broadcastreceiver的意图

BroadcastReceiver源码分析