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

일정 시간마다(1분) 서비스를 실행하기 위한 방법

0 추천

일정 시간(1분)마다 서비스를 실행하려합니다.

JobScheduler를 이용해 1분에 한번씩 Service를 호출하는데

스캐쥴러가 동작을 잘 안합니다... 최초 시작도 20분 뒤에 실행되는가 하면 반복도 20분정도 걸리는거같고 ..

소스코드는 아래와 같습니다.

JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
ComponentName jobService = new ComponentName(getPackageName(), ScanJobService.class.getName());
JobInfo jobInfo = new JobInfo.Builder(553, jobService).setPeriodic(60000).build();
int jobId = jobScheduler.schedule(jobInfo);

도움 부탁드립니다.

음무 (17,820 포인트) 님이 2017년 7월 11일 질문

1개의 답변

+1 추천
 
채택된 답변
setOverrideDeadline에 60000으로 설정해 보세요.

최소한 1분안에는 동작해야한다는 뜻입니다.

정확히 1분에 한번씩 동작해야 한다면 JobScheduler 동작에는 맞지 않습니다. TimeTick이나 AlarmManager를 활용하세요.
Development Guy (70,570 포인트) 님이 2017년 7월 11일 답변
음무님이 2017년 7월 12일 채택됨
AlarmManager를 사용하면 안드로이드 M 이후부터는 단말 베터리절약정책으로 인해 충전중이 아닌경우 5분에 한번씩 동작하게 되던데 .. 해결 방법이 있을까요?
doze 때문에 없습니다.
...