Intent
, которые я транслировал с LocalBroadcastManager
, похоже, не расходуются, а накапливаются. Каждый раз, когда я отправляю рассылку, я получаю и ее, и все ранее отправленные рассылки, в onReceive
.
В периодическом JobService
я создаю BroadcastReceiver
с IntentFilter
и динамически регистрирую его с lbm.registerReceiver(receiver, intentFilter);
. Затем я запускаю Service
, который создает Intent
с тем же фильтром в своем конструкторе, выполняет lbm.sendBroadcast(intent);
один раз, а затем останавливается. sendBroadcast
возвращает true, что должно указывать на то, что оно было получено на другом конце (см. -were-received">Есть ли способ узнать, были ли получены трансляции LocalBroadcastManager?). Однако каждый раз, когда этот цикл повторяется, все ранее полученные Intents
принимаются снова. Связав временную метку, я подтвердил, что на самом деле старые просто лежат без дела и получаются снова и снова.
Как мне «потребить» полученное Intent
? Из того, что я могу сказать, в этом нет необходимости, если он был получен onReceive. Я не нахожу способов отмены трансляции ни в Intent
, ни в LocalBroadcastManager
.
Как я могу получать каждую трансляцию только один раз?