Home » Android » android – Is there a way to tell if LocalBroadcastManager broadcasts were received?

android – Is there a way to tell if LocalBroadcastManager broadcasts were received?

Posted by: admin June 15, 2020 Leave a comment

Questions:

Is there a way to tell if LocalBroadcastManager broadcasts were received? Or are being listened to?

Basically I have an IntentService listening for Google Cloud Messages. When it gets one I need to either show a notification OR alert my main Service that there’s been a new message – crucially I don’t want both! So I need to know whether the message was dealt with by my main Service …

Clearly it can be done with sendOrderedBroadcast and a BroadcastReceiver but that seems overkill for my simple private intra-process needs.

How to&Answers:

Is there a way to tell if LocalBroadcastManager broadcasts were received? Or are being listened to?

sendBroadcast() returns true if there was 1+ receivers, false otherwise. That’s not documented, but that is based on the current implementation. I filed an issue to get that documented.

Hence, your IntentService could use sendBroadcast() to try to send a message to your running Service, if it exists. If it does, sendBroadcast() should return true, and the IntentService knows that the message should be handled there. If sendBroadcast() returns false, you can raise the Notification.