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.
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. –
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. –
Espero que eso sea lo que mencioné no se disparará cuatro veces, ya que cancela el intento pendiente anterior –