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

백그라운드에서 Service 작동시 계속 죽었다가 살아나는 문제

0 추천
백그라운드 Service에서 지속적인 작업을 해야하는 경우가 있는데요,

 

충전케이블이 연결되어 있거나, 화면이 켜져있을때는 정상 동작 합니다.

 

이외의 경우 서비스 안에서 작동하는 이벤트들이 딜레이가 걸리게 되는데요

(대표적인 경우, 초당 1회 호출하는 Callback 메소드가 1초에 한번이 아니라 불규칙적으로 호출됨)

 

이 문제의 해결방법으로는

1. Forground 서비스로 등록하기 (대신 노티피케이션이 표시된다는 문제점 존재)

2. 작업 수행하는동안 일정 시간마다 알람으로 호출하기

 

이 두가지 해결법을 생각중입니다.

1번같은경우 노티를 강제로 띄워야하기때문에 적용하기 힘들고,

2번같은경우 베터리 이슈가 없는지 궁금합니다.(알람을 10초에1번씩 호출한다고 했을때)

 

두가지 모두 깔끔한 방법이 아닌것같은데

 

위 문제를 해결할만한 좋은 방법이 있을까요 ??
음무 (17,820 포인트) 님이 2015년 3월 3일 질문

1개의 답변

+3 추천
 
채택된 답변
충전 케이블이 연결되어 있거나 화면이 켜져있는 경우에는 폰이 정상적으로 돌아가고 있는 때입니다.

케이블이 연결되지 않고, 화면이 꺼진지 약간의 시간이 지나면 폰은 sleep 상태에 들어가게 됩니다.

전력소모를 줄이기 위해서 대부분의 프로세스가 돌지 않는 것이지요. 물론 sleep이라고 해도 중간중간 잠시 깨어나서 지연된 작업을 처리해주긴 합니다만, 원하시는 것처럼 정확하게 시간이 맞지는 않습니다.

여기까지는 원인을 말씀드린거구요.

2번처럼 알람으로 일정시간마다 sleep모드를 깨우는 경우에는 당연히 sleep 모드를 유지하는 것보다 전력을 더 소모하게 됩니다. sleep을 유지하면서 동작을 하는 방법은 없고, 당연히 동작을 더 하니까 배터리는 더 소모하는 거지요.

다만, 얼마나 잦은 빈도로 sleep을 깨울건지, 깨워서 어떤 일을 시킬 것인가에 따라 배터리 소모 문제는 달라질 것 같습니다.

백그라운드로만 동작해야 한다면 2번이 일반적인 방법인 건 맞습니다.(포그라운드 서비스라면 1번도 일반적인 건 맞지만, 안된다고 하셔서 제외.)
cc1232 (35,280 포인트) 님이 2015년 3월 4일 답변
음무님이 2015년 3월 10일 채택됨
...