2011-08-20 11 views
13

Así que este es el trato ... Tengo que silenciar el teléfono del usuario cuando tienen clase. Entonces necesito que suene una alarma todos los días a una hora específica, para cada clase.¿Qué tan inexacto es setInexactRepeating() para AlarmManager?

Así que estoy pensando que cada clase tiene su propia alarma (intervalo establecido para un día). Y el teléfono se silencia si la clase está en sesión el día de hoy.

Aquí está mi código actual:

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

Will setInexactRepeating() ser lo suficientemente precisa para silenciar el teléfono en pocos minutos en un intervalo de días?

+0

tenga en cuenta que el argumento de intervalo anterior debe ser una de las constantes de 'AlarmManager.INTERVAL_ *'. –

+0

@Jeffrey: No del todo cierto. Desde la documentación "intervalo en milisegundos entre repeticiones posteriores de la alarma. Si este es uno de INTERVAL_FIFTEEN_MINUTES, INTERVAL_HALF_HOUR, INTERVAL_HOUR, INTERVAL_HALF_DAY o INTERVAL_DAY, entonces la alarma se alineará en fase con otras alarmas para reducir el número de activaciones. la alarma se establecerá como si la aplicación hubiera llamado a setRepeating (int, long, long, PendingIntent) " – pmont

+0

@pmont, pero si lo hizo, es probable que su código no esté funcionando como esperaba. –

Respuesta

11

Probablemente no, especialmente si es un intervalo de un día completo.

Desde el documentation:

primer disparo de su alarma no será antes de la hora solicitada, pero podría no ocurrir durante casi un intervalo completo después de ese tiempo. Además, aunque el período total de la alarma de repetición será el requerido, el tiempo entre cada dos disparos sucesivos de la alarma puede variar. Si su aplicación exige una fluctuación de fase muy baja, utilice setRepeating (int, long, long, PendingIntent) en su lugar.

+1

Oh, eso no sería bueno. ¿Cuánto afectaría setRepeating() a la batería? –

+3

Por períodos de más de una hora, debe ser insignificante. – rmmh

+0

@rmmh ¿en qué documentación está basando este último argumento? –