如何从一个BroadcastReceiver报告回到android中的服务?

时间:2011-06-12 22:19:18

标签: android

我有一个正在运行的服务,并且有兴趣在安装,删除或更新软件包时收到通知。

我知道我应该使用广播接收器,但它在BroadcastReceiver明确说明......

  

您可能无法显示对话框或绑定到   来自内部的服务   广播接收器

所以我的问题是 - 我如何通知服务已经进行了这样的广播。

2 个答案:

答案 0 :(得分:1)

扩展您引用的文字......

  

特别是,您可能无法在BroadcastReceiver中显示对话框或绑定到服务。对于前者,您应该使用NotificationManager API。 对于后者,您可以使用Context.startService()向服务发送命令。

来自Context.startService()文档...

  

如果此服务尚未运行,它将被实例化并启动(如果需要,为其创建一个进程); 如果它正在运行,那么它仍在运行

换句话说,在已经运行的服务上调用startService()的双赢局面不会产生负面影响。

答案 1 :(得分:1)

您无法绑定它,但没有禁止通过意图调用服务:

context.startService( <your intent with a name that match the filter of your service> );

然后照常把你的数据放在这个意图的附加内容中。

另一种选择可能是AIDL,但我还没有探索过。