0

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에서 방송을 취소하는 방법을 찾지 못했습니다.

각 브로드 캐스트를 한 번만받을 수있는 방법은 무엇입니까?

+1

JobService가 완료되면 BroadCastReceiver 등록을 취소하십시오. –

+0

나는 한 자리에서 jobfinished 전에 정말로 그렇게 잊어 버렸다. 결과는 지금까지 더 좋아 보인다. 희망의 광선?! 팁 고마워! – Toerndev

답변

0

@Talha Mir에게 감사의 말을 전했습니다.

다른 경로가 아니라 unregisterReceiveronStopJob에만 전화했습니다. 이것을 추가하면 문제가 해결됩니다.

수신자가 등록 취소되지 않은 경우 브로드 캐스트가 onReceive 이후에 붙어있을 수 있습니다.

관련 문제