안녕하세요. 안드로이드 초보 개발자입니다.
앱을 사용중이지 않아도 단말 주소록이 변경되면 해당 내용을 수신하면 반영하여야 합니다.
그래서 서비스내부에 ContentObserver를 상속받은 클래스를 만들고, registerContentObserver를 하도록 하였습니다.
다양한 상황에 startService를 해주고 있습니다.
어차피 해당 서비스가 이미 실행중이면 onStartCommand가 불리고 맙니다.
onStartCommand에서는 return START_REDELIVER_INTENT; 을 해주고 있습니다.
따로 stopService는 시켜주지 않고 있습니다. (폰이 켜져있는동안은 계속 실행되있는게 목적)
onCreate에서 registerContentObserver하고 onDestroy에서 unregisterContentObserver하고 있습니다.
즉, stopService를 부르지 않기 때문에 onDestroy도 되지 않고 unregisterContentObserver도 불리지 않는거죠.
앱을 강제종료하거나 하면 서비스가 죽습니다. (물론 onDestroy는 불리지 않고..)
그래서 다시 onCreate, registerContentObserver를 하게 됩니다.
즉, regi는 여러번이 될수도 있는데 unregi는 호출을 하지 않고 있는 상황입니다.
이게 앱 강제종료 같은 상황이면 안드로이드가 알아서 unregi를 해줄거라고 생각하고 있는데..
그게 맞는지도 모르겠네요 ㅠ
근데 이게 계속 쓰다보면 폰이 느려지는듯한 느낌이 있습니다.
ContentObserver가 여러번 등록된게 내부적으로 남아있어서 그런가 싶기도 합니다.
그래서 Observer 갯수 확인을 할수 있는 방법이 없나... 한데요
혹시 이에 대한 내용 아시는분, 조언 부탁드립니다.
감사합니다.