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

Background Service 동작과 CPU Lock

0 추천
Background 서비스를 돌리고있습니다.

Service는 타이머를 이용하여 주기적으로 10분간격으로 서버와 연결하여 서버에 신호를 보내주고있구요,

 

그런데 문제가있네요;

 

타이머가 도는곳에 로그를 찍어보니

10분마다 찍히지 않습니다.

 

금요일 오후 에 퇴근할때까지는 (휴대폰을 켜놓고 테스트했으니 10분마다 돌아가는 것을 ㅘㄱ인하였기 때문에) 정상동작했었는데,

토,일 2일간 휴대전화를 냅두고 오늘 출근후 확인해 보니

하루에 한번~두번정도 실행된 기록이있습니다.

분명 Background 서비스는 10분마다 돌아가게 코드를 짰는데 말이죠.

(물론 Service 내에서 알람매니저를 통해 서비스가 죽거나 종료되었을 경우 재실행되게 해놓았고,

이것역시 테스트를 통해 정상동작 하는것을 확인하였습니다.)

 

찾아보니 CPU lock 이 있고, 휴대전화가 일정시간 사용하지 않으면 CPULock이 걸려 수면상태에 빠지게 된다고 하는데요.

Service의 10분마다 돌아가는 타이머쪽에 CPu lock을 해제하는 코드를 삽입하면 문제없이 정상적으로 돌아갈까요?

가장 걱정되는 부분은 CPU Lock을 해제하는 것은 휴대전화 배터리 소모를 촉진시키기 때문에 사용을 자제하라는 글을 본적이 있습니다.

그렇다면 CPU Lock 을 해제하지 않고도 매 10분마다 끊임없이 코드를 돌릴수 있는 방법이 존재하나요?

카카오톡과 같은 앱은 어떻게 해결하였는지..다른 고수님들의 앱은 어떻게 동작하게 설계하였는지..궁금합니다.

 

감사합니다.
안드로이드로우 (15,740 포인트) 님이 2014년 11월 24일 질문
안드로이드로우님이 2016년 8월 4일 수정

1개의 답변

+1 추천
 
채택된 답변
뭔가 잘못생각하고 계십니다.

CPU lock 자체가 문제가 아니라 "10분 간격으로 주기적으로 작업하는 것"이 배터리를 소모합니다.

님이 의도한 대로 앱이 정상동작하면 배터리가 광탈하고 사용자들한테 별점 1개 폭격을 받을 겁니다.

앱 구조를 바꾸시는게 좋을 것 같아요.
익명사용자 님이 2014년 11월 24일 답변
안드로이드로우님이 2014년 11월 25일 채택됨
답변감사합니다.
그렇군요..
하지만 제 질문의 중요요지는.. '주기' 가 아니라 Background에서 일정간격ㄱ으로 정상적으로 돌아가는것을 '보장' 하느냐가 질문의 요지입니다.
(그렇지만 좋은정보 감사합니다. 10분마다 돌아가는것은 문제가 있군요!  1시간..정도는 어떨지)

이 부분에 대해서는 어떻게 생각하시는지..여쭙고 싶습니다!
고견 부탁드립니다. ㅎㅎ
서비스 시작시  startForeground 메소드는 호출하나요?
알람매니저를 이용해 서비스를 계속 살리는 것 역시 배터리를 소모합니다.
startForeground!!!!!!!!!!!!!!!
감사합니다!!
...