2011-08-20 4 views
13

그래서 여기에 거래가 있습니다 ... 나는 그들이 수업을 할 때 사용자의 전화를 침묵하게해야합니다. 그래서 각 수업마다 매일 특정 시간에 나가기 위해 경보가 필요합니다.AlarmManager에 대해 setInexactRepeating()이 얼마나 정확하지 않습니까?

그래서 모든 클래스에는 각각의 알람 (하루 동안 설정된 간격)이 있다고 생각합니다. 그리고 수업이 현재 세션에 있으면 전화가 끊어집니다.

am.setInexactRepeating(AlarmManager.RTC_WAKEUP, startTime, 
         DAY_IN_MILLISECONDS, start); 

윌 setInexactRepeating() 하루 간격 동안 몇 분 이내에 전화를 침묵 할만큼 정확 :

여기에 내 현재 코드는?

+0

위의 간격 인수는 'AlarmManager.INTERVAL_ *'의 상수 중 하나 여야합니다. –

+0

@ 제프리 : 전혀 사실이 아닙니다. 문서에서 "알람의 후속 반복 사이의 간격 (밀리 초) INTERVAL_FIFTEEN_MINUTES, INTERVAL_HALF_HOUR, INTERVAL_HOUR, INTERVAL_HALF_DAY 또는 INTERVAL_DAY 중 하나 인 경우 알람이 다른 알람과 위상이 일치하여 웨이크 업 횟수를 줄입니다. 응용 프로그램이 setRepeating (int, long, long, PendingIntent) " – pmont

+0

@pmont라는 코드를 호출 한 것처럼 경보가 설정됩니다. 그러나 그렇게하면 코드가 예상 한대로 작동하지 않을 수 있습니다. –

답변

11

아마 하루 종일의 간격 일 것입니다. documentation에서

:

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

+1

오, 좋지 않을 것입니다. 얼마나 심하게 setRepeating() 배터리에 영향을 미칠까요? –

+3

한 시간 이상 지속되면 무시해도 좋습니다. – rmmh

+0

@rmmh이 마지막 인수를 기반으로하는 문서는 무엇입니까? –

관련 문제