有没有办法判断是否收到了LocalBroadcastManager广播?

时间:2013-09-01 13:40:01

标签: android broadcastreceiver android-broadcast localbroadcastmanager

有没有办法判断是否收到了LocalBroadcastManager广播?还是正在听?

基本上我有一个IntentService监听Google Cloud Messages。当它得到一个我需要显示通知或警告我的主要服务,有一个新的消息 - 至关重要的是我不想要两个!所以我需要知道消息是否由我的主要服务处理......

显然,可以使用sendOrderedBroadcast和BroadcastReceiver完成,但这对于我简单的私有进程内需求来说似乎有点过分了。

1 个答案:

答案 0 :(得分:28)

  

有没有办法判断是否收到了LocalBroadcastManager广播?还是正在听?

如果有1个以上的接收器,

sendBroadcast()会返回true,否则会返回false。这没有记录,但这是基于当前的实现。我提交了an issue to get that documented

因此,您的IntentService可以使用sendBroadcast()尝试向正在运行的Service发送消息(如果存在)。如果是,sendBroadcast()应该返回true,而IntentService知道应该在那里处理该消息。如果sendBroadcast()返回false,您可以提升Notification