0

Intent我广播的sLocalBroadcastManager似乎没有被消耗,而是在积累。每次我发送广播时,我都会收到它和之前发送的所有广播,在onReceive.

在期刊中JobService,我正在BroadcastReceiver使用 an创建一个IntentFilter并使用lbm.registerReceiver(receiver, intentFilter);. 然后我启动 a Service,它在其构造函数中创建Intent具有相同过滤器的 a ,并执行lbm.sendBroadcast(intent);一次,然后自行停止。 sendBroadcast返回 true ,表明它是在另一端收到的(请参阅是否有办法判断是否收到了 LocalBroadcastManager 广播?)。然而,每次重复此循环时,都会Intents再次接收所有先前接收到的信息。通过捆绑一个时间戳,我已经确认它真的是旧的只是躺在周围并被一遍又一遍地接收。

我如何“消费”收到的Intent?据我所知,如果它是由 onReceive 接收的,这应该是没有必要的。Intent我在或中找不到任何取消广播的方法LocalBroadcastManager

我怎样才能只接收一次广播?

4

1 回答 1

0

感谢@Talha Mir,他将解决方案作为评论发布。

我只是在调用unregisterReceiveronStopJob而不是在其他路径中。添加这个解决了这个问题。

onReceive显然,如果接收者没有未注册,广播可以在之后继续存在。

于 2016-05-31T10:48:17.823 回答