Die Intent
s s ich mit LocalBroadcastManager
broadcast scheinen nicht konsumiert zu werden, sondern akkumulieren. Jedes Mal, wenn ich eine Sendung sende, erhalte ich sowohl diese als auch alle zuvor gesendeten Sendungen in onReceive
.LocalBroadcastManager Broadcast nicht konsumiert
In einer Zeitschrift JobService
erstelle ich eine BroadcastReceiver
mit einer IntentFilter
und registriert sie dynamisch mit lbm.registerReceiver(receiver, intentFilter);
. Ich starte dann eine Service
, die eine Intent
mit dem gleichen Filter in seinem Konstruktor erstellt, und macht lbm.sendBroadcast(intent);
einmal, dann stoppt sich. sendBroadcast
gibt true zurück, was anzeigen sollte, dass es am anderen Ende empfangen wurde (siehe Is there a way to tell if LocalBroadcastManager broadcasts were received?). Jedes Mal, wenn dieser Zyklus wiederholt wird, werden jedoch alle zuvor empfangenen Intents
erneut empfangen. Durch die Bündelung eines Zeitstempels habe ich bestätigt, dass es wirklich die alten sind, die nur herumliegen und immer wieder empfangen werden.
Wie "konsumiere" ich die empfangenen Intent
? Von dem, was ich sagen kann, sollte dies nicht notwendig sein, wenn es von onReceive erhalten wurde. Ich finde keine Methoden zum Abbrechen einer Sendung in Intent
oder LocalBroadcastManager
.
Wie kann ich jede Sendung nur einmal empfangen?
Vergewissern Sie sich, dass Sie den BroadCastReceiver abmelden, wenn der JobService abgeschlossen ist. –
hatte ich tatsächlich vergessen, dies zu tun, bevor jobFinished an einem Ort. Die Ergebnisse sehen bisher besser aus. Ein Strahl der Hoffnung?! Danke für den Tipp! – Toerndev