2014-05-19 1 views
0

버튼을 눌렀을 때 즉시 반복 알람을 설정하고 매 4 시간마다 반복되는 알람을 설정하는 방법은 무엇입니까?실시간으로 경과 된 알람 관리자가 즉시 실행하고 매 4 시간마다 반복합니다.

alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 
4*60*60*1000, alarmIntent); 

버튼을 누르면 즉시 반복되지만 시작하지는 않습니다. 그것은 5 분 정도 걸립니다.

내가 뭘 잘못하고 있니?

나는 아래의 코드를 변경하고 알람 즉시

alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, AlarmManager.INTERVAL_FIFTEEN_MINUTES, 4*60*60*1000, alarmIntent); 

을 해고 그러나 매 4 시간을 반복하지 않습니다. 4 시간마다 경보를 반복하려면 어떻게합니까?

답변

0

setInexactRepeating 대신 setRepeating을 사용하십시오.

사용 setInexactRepeating 당신은 당신이 알람 주위 지정된 시간을 발사 할 때 당신이 정말로 그것을 그 시간에 정확히 트리거 할 필요가 없습니다.

이 방법은 Android Os가 배터리 수명을 절약하기 위해 동시에 모든 알람을 발생시킬 수 있도록하기 위해 존재합니다.

this 질문을 보면 도움이 될 것입니다.

허용 대답 인용 : 알람 트리거가 다음 주 등 매주에 다시 할 때 다음

당신이 AlarmManager.setExact에 알람을 예약해야합니다()와.

+0

Jeannin- 감사하지만 최신 버전에서는 setRepeating이 setInexactRepeating으로 간주됩니다. – Reva

+0

나는 그 사실을 모르고 있습니다. 어쩌면 우리는 정확한 동작을보기 위해 안드로이드 소스 코드를 확인해야합니다. –

+0

Google의 설명서에서 API 19부터 반복되는 모든 알람은 정확하지 않습니다. 처음으로 즉시 알람을 울리면 어떻게됩니까? – Reva

0

아마도 이것은 setInexactRepeating을 사용하고 있기 때문일 수 있습니다.

구글의 documentationsetInexactRepeating위한에서

:

  • 알람의 첫 번째 트리거가 요청 된 시간 이전되지 않습니다했지만, 그 때 이후 거의 전체 구간에 대해 발생하지 않을 수 있습니다 . 의 경우 반복 알람의 전체 기간은 으로 요청되지만 알람이 연속해서 두 번 울리는 시간은 다를 수 있습니다. 애플리케이션에 매우 낮은 지터가 필요한 경우 대신 setRepeating (int, long, long, PendingIntent)을 사용하십시오.

시도 :

alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime()+2*1000, 
4*60*60*1000, alarmIntent); 

하고 2 초 후 최소 발사 여부를 확인 .. 이 문제를 해결하지만 해결 방법에 당신을 이끌 수있는 경우 확실하지.

+0

@ arnab- 감사합니다. Google의 설명서에서 API 19로 모든 반복 알람이 부정확합니다. 어떻게 즉시 알람을 울릴 수 있습니까? – Reva

+0

alarmMgr.setInexactRepeating (AlarmManager.ELAPSED_REALTIME, AlarmManager.INTERVAL_FIFTEEN_MINUTES, 4 * 60 * 60 * 1000, alarmIntent); 즉시 알람이 울리지 만 4 시간 후에는 반복되지 않습니다. Pls 도움! – Reva

+0

내가 아는 한 정확한 반복을 설정할 수 없습니다. 당신은 정확한 경보를 만들 수 있습니다. 그리고 그 고리가 4 시간 후에 또 다른 경보를 설정하면, 그 일을 계속합니다. – Zen

관련 문제