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 AlarmManagersu funcionamiento aquí . Pero aquí está la respuesta rápida.
Usted ve AlarmManagerbásicamente horarios PendingIntenten 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_CREATEcomo 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á nullsi el PendingIntentya no existe. Si ya existe, devuelve referencia a la existentePendingIntent