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

안드로이드 Service 죽이기

0 추천
현재 BroadcastReceiver와 Service를 이용해서 백그라운드 작업을 하는 어플을 만들었습니다.

이게 Service가 죽으면 안되서 Service의 onDestroy에 Service가 죽을경우 다시 켜는 함수를 넣어놓았습니다.

(알람 소스를 이용하여)

이리하니 서비스는 사용자가 앱 관리에 들어가서 강제종료 하지 않는이상은 다시 살아나더라구요 좀비처럼

 

근데 여기서 문제가 있습니다.

사용자가 이 백그라운드 서비스를 사용할 것인지, 사용하지 않을 것인지를 직접 컨트롤 할 수 있어야 하는데요.

사용자가 이것을 '사용하지 않음' 으로 선택하면 서비스가 돌아가면 안됩니다.

원래는 '사용하지 않음' 을 누르면, Flag 값을 false로 줘서 서비스가 실행 되도 서비스의 onStart()에서 서비스가 실행되고는 있어도, 사용자가 보기엔 아무일도 하지 않게 만들어 놓았었습니다.

그런데 앱관리에서 보니 제 서비스가 차지하는 메모리가 좀 되더라구요. 그래서 사용자가 원할땐 서비스를 꼭 죽여야 합니다. 메모리 문제때문에..

 

그래서 사용자가 '사용하지 않음'을 누르면 stopService를 이용하여 서비스를 종료시키려 하였습니다.

그런데 stopService를 호출하면 Service의 onDestroy가 호출되면서

지정해놓은 알람함수가 작동하여 서비스가 다시 살아나더라구요.

 

참 딜레마에 빠졌습니다...

서비스가 죽으면 안되는데, 사용자가 원할땐 죽여야 하는....

어떻게 해결해야 할까요?
안드로이드로우 (15,740 포인트) 님이 2013년 3월 22일 질문

2개의 답변

+1 추천
 
채택된 답변
shared preference 에 flag 를 두고 true / false 확인 하면 되지 않나요??
aucd29 (218,390 포인트) 님이 2013년 3월 22일 답변
안드로이드로우님이 2013년 3월 22일 채택됨
역시 flag가 답이었습니다..ㅋㅋ
저는 그저 onStart에만 매달렸었는데 답은
Flag를 onDestroy에 놓는것이었더라구요....ㅋㅋ
onDestroy에서 Flag값을 보고 알람을 실행시키지 않는 것으로 해결하였습니다^^

답변 감사드립니다^^
0 추천

자답입니다..간단했네요..

사용자가 '사용하지 않음'을 선택하였을때,

Flag를 false로 줘서 

Service의 onDestroy에서 Flag가 false면 서비스를 실행시키는 알람이 동작되지 않게 만들었습니다.

안드로이드로우 (15,740 포인트) 님이 2013년 3월 22일 답변
...