-1

여러 토론 스레드를 거쳤고 여러 번의 반복 작업을 통해 내 응용 프로그램이 일정한 간격으로 반복적으로 실행되도록 예약했습니다. 나는 너무 성공적이지만 실력을 이해하기 위해 실을 시작합니다.Android : 계속 실행을위한 응용 프로그램 예약

TimerTask뿐만 아니라 ScheduledExecutorService를 사용하여 구현을 시도했지만 둘 다 올바른 간격으로 내 작업을 트리거하지 못했습니다. 그러나 AlarmManager로 성공을 거두었습니다.

타이밍이 ScheduledExecutorService 및 TimerTask와 잘 작동하지 않는 이유를 이해하려면 올바른 방향으로 안내해주십시오.

앱은 일정한 간격으로 작업을 수행해야합니다. 내 작업을 완료하는 데 약 5 분이 걸리며 30 분마다 한 번 실행되도록 일정을 유지하고 싶습니다. ScheduledExecutorService 또는 TimerTask를 사용하여 응용 프로그램을 빌드했을 때 30 분에 작업을 트리거하지 않지만 1 시간 이상 트리거 한 것으로 나타났습니다. 지금까지 Alarm Manager를 사용하면 약 30 분 후에 트리거가 잘 작동하는 것으로 보입니다 (약간의 차이는 있지만 다른 두 가지보다 좋음).

+0

"잘 작동하지 않았다"는 것을 완전하고 정확하게 설명하십시오. – CommonsWare

+0

@CommonsWare 질문을 세부 사항으로 업데이트했습니다. 한번 봐주세요. –

답변

0

ScheduledExecutorService 또는 TimerTask를 사용하여 응용 프로그램을 빌드했을 때 30 분에 작업을 트리거하지 않지만 1 시간 이상 트리거 한 것으로 나타났습니다. 프로세스가 종료되면

더욱 중요한 것은 사용자의 관점에서, 다른 애플 리케이션을위한 RAM을 확보하기 위해 신속하게 일한다, 어느 시점에서 일어날 수있는, 전혀 실행되지 않습니다.

트리거 지연은 아마도 장치가 잠들기 때문일 수 있습니다. 귀하의 솔루션은 사용자의 RAM을 묶을뿐만 아니라 배터리 수명을 위해 끔찍한 잠에 빠지는 것을 방지해야합니다.

AlarmManager은 서비스를 계속 실행하거나 프로세스가 필요하지 않으므로 훨씬 더 적절한 해결책입니다. 장치가 자고 싶어하기 때문에 _WAKEUP 이벤트에 응답하는 방법으로 WakefulBroadcastReceiver을 사용해야합니다.

+0

정말 대단합니다. 당신의 반응은 내가 안드로이드 시스템에서 원하는 것을 얻고 심지어 더 많은 것을 이해할 수있게 도와주었습니다. Android에서 생생하며 모든 기술 용어를 통해 더 많은 것을 탐색 할 수 있습니다. :) –