안드로이드 개발 질문/답변
(글 수 45,052)
백그라운드로 브로드캐스트를 받기위해 서비스에 브로드캐스트리시버를 구현했습니다.
이게 잘동작하다가 어느순간 동작을 안하네요. (오래동안 idle상태에 있으면 발생하는 것 같기도 하고 원인이 분명하지가 않네요.)
디버그 찍어보니 서비스는 살아 있습니다.
서비스는 살아있는데 브로드캐스트리시버만 unreg된 것 같은데
해당 서비스에 브로드캐스트리시버가 reg된 상태인지 unreg된 상태인지 알 수 있는 방법이 있을까요?

2011.11.18 18:40:01
자답입니다.
서비스가 종료된 뒤 다시 자원이 회복되 서비스가 생성이 되었지만 onstart되지 않았던 것이 문제 였습니다.
서비스는 살아있었지만 브로드캐스트리시버가 등록되어 있지 않아 동작을 하지 않은 것이었네요.
항상 돌아가야 하는 서비스기 때문에 startfoground를 적용해서 문제를 해결 했습니다.
알람을 사용하는 것도 생각해봤지만 아무래도 계속 사용해야 할 서비스라면
notifycation을 사용하는 startfoground를 좋겠죠^^
카카오톡이나 기타 앱들에서 항상 서비스로 돌고 있는 것들이 많은데
이앱들은 왜 notifycation으로 알리지 않는지 궁금하네요. 유저에게 알리지도 않으면서 백그라운드로 무슨짓을 하는지 ㅡㅡ;;




서비스는 언제든지 프래임웍에 의해 종료될 수 있는 컴포넌트 입니다.
그 시점을 유저레벨에서는 알 수 없구요.
브로드캐스트를 언제든지 받고 싶으시다면, 브로드캐스트 리시버를 만드셔야 하지 않을까요?
로직처리 관점에서 서비스와 연동을 해야 하는 제약이 있다면
브로드캐스트리시버를 만들어서 언제든지 브로드캐스트를 받을 수 있게하고
커스텀 인텐트를 만들어서 서비스한테 던져 처리하게 해야 할거 같네요.