Intent
s Я транслирую с LocalBroadcastManager
, похоже, не потребляется, а вместо этого накапливается. Каждый раз, когда я отправляю широковещательную рассылку, я получаю как ее, так и все ранее отправленные передачи, в onReceive
.LocalBroadcastManager вещание не используется
В периодической JobService
я создаю BroadcastReceiver
с IntentFilter
и регистрации его динамически с lbm.registerReceiver(receiver, intentFilter);
. Затем я запускаю Service
, который создает Intent
с тем же фильтром в своем конструкторе и делает lbm.sendBroadcast(intent);
один раз, а затем останавливается. sendBroadcast
возвращает значение true, которое должно указывать на то, что оно было получено на другом конце (см. Is there a way to tell if LocalBroadcastManager broadcasts were received?). Однако каждый раз, когда этот цикл повторяется, все полученные ранее Intents
принимаются снова. Объединив временную метку, я подтвердил, что это действительно старые, которые просто лежат и получаются снова и снова.
Как я «потребляю» принятый Intent
? Из того, что я могу сказать, это не обязательно, если оно было получено onReceive. Я не нашел методов для отмены широковещательной передачи в Intent
или LocalBroadcastManager
.
Как я могу получать каждую трансляцию только один раз?
Обязательно отмените регистрацию своего BroadCastReceiver при выполнении JobService. –
Я действительно забыл сделать это до того, как стал работать в одном месте. Результаты пока выглядят лучше. Луч надежды ?! Спасибо за совет! – Toerndev