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

백그라운드에서 1분마다 동작해야하는 경우, 어떤방식을 취해야할지

0 추천
안녕하세요.

어플을 실행하면 백그라운드 서비스가 하나 돌고, 이 서비스는 어플이 종료되어도 동작을 해야합니다.

서비스가 실행 되면, onCreate에서 1분에 한번 블루투스를 약 5초간 스캔하여 서버로 업로드하는 Runnable을 등록합니다.

 

위 시나리오를 위해 서비스가 sleep에 빠지지 않게 하기 위해 AlarmManager 및 Scheduler를 사용하여 Service를 다시 startService 호출을 했지만(onStartCommand 주기를 태워 슬립을 방지하기 위해)

많은 단말들에서 정해둔 interval(1분)마다 깨어나지 않고, 약 2~5분에한번씩 알람이 호출되어 1분에 한번 작업해야하는 일을

제 때 하지 못하고 있습니다.

 

그래서 서버에서 1분에 한번 gcm을 전송하여 그때마다 스캔해서 업로드를 시켜야 하나 고민에 빠져있습니다.

 

이렇듯 백그라운드 서비스에서 1분 혹은 그 이하에 한번 작업을 반복적으로 수행해야 할  경우, 어떻게 해야할까요 ?

조언 부탁드립니다..
음무 (17,820 포인트) 님이 2016년 7월 27일 질문

2개의 답변

0 추천
이 방법이 적절할지는 모르겠지만,

저도 백그라운드 서비스에서 주기적으로 수행해야 하는 함수들이 있어서 onstartcommand에서 countdowntimer 함수를 사용했었는데, 설정해놓은 시간에 정확히 실행이 되는 것 같더라고요. 근데 이 함수는 정해진 시간안에서 정해진 주기마다 실행되는거라 질문자님이 사용하실 방식에 적절한지는 잘 모르겠네요. 한번 찾아보시고 사용해보세요 ㅎㅎ...
sksk (320 포인트) 님이 2016년 7월 27일 답변
0 추천
안드로이드 버전별로 알람을 제때 깨우게 하는 함수가 틀려서 그러니

setExact 등의 함수를 확인해보시기 바랍니다.  

 

그런데....1분마다 깨어나서 동작하면 배터리 잡아먹는 주범으로 악성앱으로 소문날 가능성이 높습니다.

마켓에 등록하는 앱이 아니라면 상관이 없지만....
익명사용자 님이 2016년 7월 27일 답변
...