¿Qué sucede con AlarmManager no entregado al repetir alarmas cuando el teléfono se despierta?
Si programamos una alarma de repetición 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 despierta? ¿El sistema entrega 4 alarmas en una fila para el mismo PendingIntent
o sólo entrega una sola alarma?
EDIT: leyendo la documentación con más atención, la documentación del método set(int, long, android.app.PendingIntent)
dice: Las intenciones de alarma se entregan con un extra de datos de tipo int llamado Intent.EXTRA_ALARM_COUNT
que indica cuántos eventos de alarma pasados han sido Acumulado en esta intención de difusión. Las alarmas recurrentes que no se han entregado porque el teléfono estaba dormido pueden tener un recuento mayor que uno cuando se entregan. Por lo tanto, cuando el teléfono sale del modo de espera, sólo se entregará una alarma, con un intento extra que contiene el número de alarmas perdidas.
- Android cancelar todos los alarmmanager
- Android AlarmManager - RTC_WAKEUP vs ELAPSED_REALTIME_WAKEUP
- ¿Cuál es la definición de dormido para un dispositivo Android?
- Android AlarmManager no se dispara después de la actualización de Google Play
- Cancelar un AlarmManager pendienteIntent en otro pendienteintent
- ¿Cómo puedo configurar un administrador de alarmas para disparar cada día específico de la semana y el tiempo en android?
- Android AlarmManager a veces se activa tarde si el teléfono se ejecuta en la batería
- Aclaración del comportamiento de AlarmManager en Android
- Android AlarmManager setRepeating no se repite con un intervalo largo
- Utilice alarmManager y el servicio para realizar la notificación de planificación sólo durante un período de tiempo específico
- Cómo programar una tarea mediante el Administrador de alarmas
- IntentService no comenzará a usar AlarmManager
- Alarma programada para repetir cada minuto del reloj android
Al leer la documentación con más atención, la documentación del método set(int, long, android.app.PendingIntent)
dice: Las intenciones de alarma se entregan con un extra de datos de tipo int llamado Intent.EXTRA_ALARM_COUNT
que indica cuántos eventos de alarma pasados se han acumulado en Esta intención difundió. Las alarmas recurrentes que no se han entregado porque el teléfono estaba dormido pueden tener un recuento mayor que uno cuando se entregan. Por lo tanto, cuando el teléfono sale del modo de espera, sólo se entregará una alarma, con un intento extra que contiene el número de alarmas perdidas.
Depende si usa intenciones pendientes como esta
PendingIntent pending = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
No disparará 4 veces ya que cancela la anterior intención pendiente
- Android Cómo llamar a un método de fragmento de un botón DialogFragment botón positivo
- Android AppWidget no se muestra en ciertos teléfonos