6

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

基本上我有一个IntentService侦听Google Cloud Messages。当它得到一个我需要显示通知或提醒我的主要服务,有一个新的消息 - 关键是我不想两个!所以,我需要知道消息是否是由我的主要业务涉及...

显然它可以与sendOrderedBroadcast和广播接收器来完成,但似乎矫枉过正我简单的私人过程内的需求。

+0

为什么你首先需要两项服务? – CommonsWare

+2

@CommonsWare - 因为它们具有大量不同的目的和生命周期,因此它改进了我的应用程序体系结构以将它们分开。一个是IntentService,另一个是绑定服务。 – ostergaard

回答

25

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

sendBroadcast()回报true如果有1 +接收器,false否则。这没有记录,但是这是基于当前的实施。我提交了an issue to get that documented

因此,您的IntentService可能会使用sendBroadcast()尝试向您的邮件运行Service(如果存在)发送邮件。如果是这样,sendBroadcast()应返回true,并且IntentService知道该消息应该在那里处理。如果sendBroadcast()返回false,则可以提高Notification

+1

DUH!我甚至看到布尔结果,只是认为这意味着广播很好......广播。谢谢。 – ostergaard

+0

这真是一个'启示'和解脱,***我的猜测是!谢谢@CommonsWare! –

相关问题