LocalBroadcastManager
으로 브로드 캐스트 된 Intent
의 브로드 캐스트는 소비되지 않고 대신 누적됩니다. 브로드 캐스트를 보낼 때마다 onReceive
에 이전 브로드 캐스트와 모두 브로드 캐스트를 수신합니다.LocalBroadcastManager 브로드 캐스트가 사용되지 않음
정기 간행물에서 JobService
나는 IntentFilter
이있는 BroadcastReceiver
을 만들고 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
에서 방송을 취소하는 방법을 찾지 못했습니다.
각 브로드 캐스트를 한 번만받을 수있는 방법은 무엇입니까?
JobService가 완료되면 BroadCastReceiver 등록을 취소하십시오. –
나는 한 자리에서 jobfinished 전에 정말로 그렇게 잊어 버렸다. 결과는 지금까지 더 좋아 보인다. 희망의 광선?! 팁 고마워! – Toerndev