2012-08-27 17 views
5

Si programamos una alarma repetitiva inexacta con AlarmManager.setInexactRepeating para que se dispare cada hora, por ejemplo, ¿qué sucede si el teléfono está en modo de espera durante 4 horas y luego se lo despierta? ¿El sistema entrega 4 alarmas seguidas por el mismo PendingIntent o solo entrega una sola alarma?¿Qué sucede con las alarmas de repetición AlarmManager no entregadas cuando el teléfono se activa?

EDIT: leer la documentación con más atención, la documentación set(int, long, android.app.PendingIntent) método dice: intentos de alarma se entregan con un adicional de datos de tipo int llamada Intent.EXTRA_ALARM_COUNT que indica cuántos eventos de alarma últimos se han acumulado en esta emisión intención. Las alarmas recurrentes que no se han entregado porque el teléfono estaba dormido pueden tener un conteo mayor a uno cuando se entregan. Por lo tanto, cuando el teléfono salga del modo de espera, solo se enviará una alarma, con un intento adicional que contiene el número de alarmas omitidas.

Respuesta

0

que depende de si se utiliza intención pendientes como esto

PendingIntent pending = PendingIntent.getBroadcast(context, 0, i, 
      PendingIntent.FLAG_CANCEL_CURRENT); 

no lo puedo disparar 4 veces ya que cancells el anterior intento pendientes

+1

No estoy seguro, pero creo que 'PendingIntent.FLAG_CANCEL_CURRENT' tiene un significado solo durante la creación/recuperación del objeto de intención pendiente, no el significado de evitar lo que he dicho en la publicación principal. –

+0

Para explicar mejor, con esa bandera está diciendo que si ya ha creado una intención pendiente que coincide con la intención pendiente que está creando ahora (es decir, la misma acción de intención, datos, etc.), el sistema cancela la anterior y crea un nuevo objeto de intención pendiente. –

+0

Espero que eso sea lo que mencioné no se disparará cuatro veces, ya que cancela el intento pendiente anterior –

1

Leer la documentación con más atención, la documentación set(int, long, android.app.PendingIntent) método dice: Los intentos de alarma se envían con datos adicionales de tipo int llamados Intent.EXTRA_ALARM_COUNT que indican cuántos eventos pasados ​​de alarma se han acumulado en esta transmisión intencionada. Las alarmas recurrentes que no se han entregado porque el teléfono estaba dormido pueden tener un conteo mayor a uno cuando se entregan. Por lo tanto, cuando el teléfono salga del modo de espera, solo se enviará una alarma, con un intento adicional que contiene el número de alarmas omitidas.

+0

acepte su respuesta, y edítela de tu pregunta –

Cuestiones relacionadas