有没有办法判断是否收到了LocalBroadcastManager广播?还是正在听?
基本上我有一个IntentService监听Google Cloud Messages。当它得到一个我需要显示通知或警告我的主要服务,有一个新的消息 - 至关重要的是我不想要两个!所以我需要知道消息是否由我的主要服务处理......
显然,可以使用sendOrderedBroadcast和BroadcastReceiver完成,但这对于我简单的私有进程内需求来说似乎有点过分了。
答案 0 :(得分:28)
如果有1个以上的接收器,有没有办法判断是否收到了LocalBroadcastManager广播?还是正在听?
sendBroadcast()
会返回true
,否则会返回false
。这没有记录,但这是基于当前的实现。我提交了an issue to get that documented。
因此,您的IntentService
可以使用sendBroadcast()
尝试向正在运行的Service
发送消息(如果存在)。如果是,sendBroadcast()
应该返回true
,而IntentService
知道应该在那里处理该消息。如果sendBroadcast()
返回false
,您可以提升Notification
。