Background 서비스를 돌리고있습니다.
Service는 타이머를 이용하여 주기적으로 10분간격으로 서버와 연결하여 서버에 신호를 보내주고있구요,
그런데 문제가있네요;
타이머가 도는곳에 로그를 찍어보니
10분마다 찍히지 않습니다.
금요일 오후 에 퇴근할때까지는 (휴대폰을 켜놓고 테스트했으니 10분마다 돌아가는 것을 ㅘㄱ인하였기 때문에) 정상동작했었는데,
토,일 2일간 휴대전화를 냅두고 오늘 출근후 확인해 보니
하루에 한번~두번정도 실행된 기록이있습니다.
분명 Background 서비스는 10분마다 돌아가게 코드를 짰는데 말이죠.
(물론 Service 내에서 알람매니저를 통해 서비스가 죽거나 종료되었을 경우 재실행되게 해놓았고,
이것역시 테스트를 통해 정상동작 하는것을 확인하였습니다.)
찾아보니 CPU lock 이 있고, 휴대전화가 일정시간 사용하지 않으면 CPULock이 걸려 수면상태에 빠지게 된다고 하는데요.
Service의 10분마다 돌아가는 타이머쪽에 CPu lock을 해제하는 코드를 삽입하면 문제없이 정상적으로 돌아갈까요?
가장 걱정되는 부분은 CPU Lock을 해제하는 것은 휴대전화 배터리 소모를 촉진시키기 때문에 사용을 자제하라는 글을 본적이 있습니다.
그렇다면 CPU Lock 을 해제하지 않고도 매 10분마다 끊임없이 코드를 돌릴수 있는 방법이 존재하나요?
카카오톡과 같은 앱은 어떻게 해결하였는지..다른 고수님들의 앱은 어떻게 동작하게 설계하였는지..궁금합니다.
감사합니다.