마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

브로드캐스트리시버 누적현상

0 추천
서비스 안에서 알람매니저로 브로드캐스트리시버를 호출합니다.

일단 소스상 브로드캐스트리시버를 객체로 불러와 쓰고 있구요,

서비스가 새로 호출될때 리시버의 값들이 계속 누적 되서 호출이 되고 있습니다.

파싱하는 작업이라 누적이 되서 많은 데이터를 사용하기 때문에 이와 같은 현상이 일어나면 안되는 되요.

리시버를 초기화 한다거나 다른 방법이 없을까요?
익명사용자 님이 2014년 8월 4일 질문

1개의 답변

0 추천
 
채택된 답변
regist / unregist 를 반복하시는 것도 한 방법이지 않을까요?

물론 이 때 broadcast receiver 객체도 초기화 하구요
Gioskhan (12,060 포인트) 님이 2014년 8월 4일 답변
IntentFilter filter = new IntentFilter();               
                filter.addAction(INTENT_ACTION);
                                unregisterReceiver(weatherReciver);
                registerReceiver(weatherReciver, filter);
이런 방식으로 했더니 아예 리시버에서 오류가 나더 군요
오류 메시지 부탁드려요. 그리고 unregist를 파싱하는 작업이 시작될 때 하시고, 끝나면 regist 해야하지 않을까요?
언레지스터에서 오류 나구요,
런타임익셉션입니다.
ㅠㅠ
태그 감사합니다.
그런데 죄송하지만 리시버가 호출이 안되는데 뭐가 문제일까요ㅠ?

IntentFilter filter = new IntentFilter();               
                    filter.addAction(INTENT_ACTION);
                    registerReceiver(weatherReciver, filter);
                    if(weatherReciver!=null)
                    {
                        unregisterReceiver(weatherReciver);
                        weatherReciver = null;
                    }
지금 코드만 봐서는 등록 하자마자 바로 해지하시니 리시버로 뭐가 안날라오지 싶은데요.. 저 위에 unregist/regist 타이밍을 바꿔보시라고 먼저 말씀드렸네요.
>> unregist를 파싱하는 작업이 시작될 때 하시고, 끝나면 regist 해야하지 않을까요?
...