6

Gibt es eine Möglichkeit festzustellen, ob Broadcast Broadcast empfangen wurde? Oder wird gehört?Gibt es eine Möglichkeit zu sagen, ob Broadcast Broadcast empfangen wurde?

Grundsätzlich habe ich einen IntentService, der auf Google Cloud Messages hört. Wenn es einen bekommt, muss ich entweder eine Benachrichtigung anzeigen ODER meinen Hauptdienst benachrichtigen, dass es eine neue Nachricht gibt - im Wesentlichen möchte ich nicht beides! Also muss ich wissen, ob die Nachricht von meinem Hauptdienst bearbeitet wurde ...

Natürlich kann es mit sendOrderedBroadcast und einem BroadcastReceiver getan werden, aber das scheint für meine einfachen privaten Intra-Prozess-Bedürfnisse übertrieben.

+0

Warum brauchen Sie in erster Linie zwei Dienste? – CommonsWare

+2

@CommonsWare - weil sie massiv unterschiedliche Zwecke und Lebenszyklen und verbessert daher meine Anwendungsarchitektur, sie zu trennen. Einer ist ein IntentService und der andere ist ein gebundener Dienst. – ostergaard

Antwort

25

Gibt es eine Möglichkeit zu sagen, ob LocalBroadcastManager Sendungen empfangen wurden? Oder wird gehört?

sendBroadcast() kehrt true wenn 1+ Empfänger war, false anders. Das ist nicht dokumentiert, basiert aber auf der aktuellen Implementierung. Ich habe an issue to get that documented abgelegt.

Daher könnte IntentServicesendBroadcast() verwenden, um zu versuchen, eine Nachricht an Ihre laufenden Service senden, wenn es existiert. Wenn dies der Fall ist, sollte sendBroadcast()true zurückgeben, und die IntentService weiß, dass die Nachricht dort behandelt werden soll. Wenn sendBroadcast()false zurückgibt, können Sie den Wert Notification erhöhen.

+1

DUH! Ich sah sogar das boolesche Ergebnis und dachte einfach, dass es bedeuten würde, dass die Sendung gut war ... ausgestrahlt. Vielen Dank. – ostergaard

+0

Was für eine 'Enthüllung' und Erleichterung, dass es wirklich *** ist, was meine Vermutung war! Danke @CommonsWare! –

Verwandte Themen