현재 BroadcastReceiver와 Service를 이용해서 백그라운드 작업을 하는 어플을 만들었습니다.
이게 Service가 죽으면 안되서 Service의 onDestroy에 Service가 죽을경우 다시 켜는 함수를 넣어놓았습니다.
(알람 소스를 이용하여)
이리하니 서비스는 사용자가 앱 관리에 들어가서 강제종료 하지 않는이상은 다시 살아나더라구요 좀비처럼
근데 여기서 문제가 있습니다.
사용자가 이 백그라운드 서비스를 사용할 것인지, 사용하지 않을 것인지를 직접 컨트롤 할 수 있어야 하는데요.
사용자가 이것을 '사용하지 않음' 으로 선택하면 서비스가 돌아가면 안됩니다.
원래는 '사용하지 않음' 을 누르면, Flag 값을 false로 줘서 서비스가 실행 되도 서비스의 onStart()에서 서비스가 실행되고는 있어도, 사용자가 보기엔 아무일도 하지 않게 만들어 놓았었습니다.
그런데 앱관리에서 보니 제 서비스가 차지하는 메모리가 좀 되더라구요. 그래서 사용자가 원할땐 서비스를 꼭 죽여야 합니다. 메모리 문제때문에..
그래서 사용자가 '사용하지 않음'을 누르면 stopService를 이용하여 서비스를 종료시키려 하였습니다.
그런데 stopService를 호출하면 Service의 onDestroy가 호출되면서
지정해놓은 알람함수가 작동하여 서비스가 다시 살아나더라구요.
참 딜레마에 빠졌습니다...
서비스가 죽으면 안되는데, 사용자가 원할땐 죽여야 하는....
어떻게 해결해야 할까요?