Mientras que casi todos aquí han dado la respuesta correcta, ningún cuerpo explicó sobre qué base funcionan las alarmas
De hecho, puede obtener más información sobre AlarmManager
su funcionamiento aquí . Pero aquí está la respuesta rápida.
Usted ve AlarmManager
básicamente horarios PendingIntent
en algún momento en el futuro. Entonces, para cancelar la alarma programada, debe cancelarla PendingIntent
.
Siempre tenga en cuenta dos cosas al crear el PendingIntent
PendingIntent.getBroadcast(context,REQUEST_CODE,intent, PendingIntent.FLAG_UPDATE_CURRENT);
- Código de solicitud: actúa como el identificador único
- Indicador: define el comportamiento de
PendingIntent
Ahora, para verificar si la alarma ya está programada o para cancelarla, solo necesita tener acceso a la misma PendingIntent
. Esto se puede hacer si usa el mismo código de solicitud y usa FLAG_NO_CREATE
como se muestra a continuación
PendingIntent pendingIntent=PendingIntent.getBroadcast(this,REQUEST_CODE,intent,PendingIntent.FLAG_NO_CREATE);
if (pendingIntent!=null)
alarmManager.cancel(pendingIntent);
Con FLAG_NO_CREATE
él volverá null
si el PendingIntent
ya no existe. Si ya existe, devuelve referencia a la existentePendingIntent