【问题标题】:Is there a way to tell if LocalBroadcastManager broadcasts were received?有没有办法判断是否收到了 LocalBroadcastManager 广播?
【发布时间】:2013-09-04 17:20:01
【问题描述】:

有没有办法判断是否收到了 LocalBroadcastManager 广播?或者正在被倾听?

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

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

【问题讨论】:

  • 为什么首先需要两个服务?
  • @CommonsWare - 因为它们的用途和生命周期大不相同,因此它改进了我的应用程序架构以将它们分开。一个是 IntentService,另一个是绑定服务。

标签: android broadcastreceiver android-broadcast localbroadcastmanager


【解决方案1】:

有没有办法判断是否收到了 LocalBroadcastManager 广播?或者正在被倾听?

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

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

【讨论】:

  • 呃!我什至看到了布尔结果,只是认为这意味着广播很好......广播。谢谢。
  • 我的猜测是确实是,这真是一个“启示”和解脱!谢谢@CommonsWare!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
相关资源
最近更新 更多