studio programacion para móviles libro edición desarrollo curso aplicaciones android android-intent alarmmanager android-pendingintent

android - programacion - ¿Para qué se utiliza "requestCode" en PendingIntent?



manual de programacion android pdf (2)

  1. requestCode se usa para recuperar la misma instancia de intención pendiente más tarde (para cancelar, etc.).
  2. Sí, supongo que las alarmas se anularán entre sí. Mantendré los códigos de solicitud únicos.

Fondo:

Estoy usando PendingIntent para alarmas a través de AlarmManager.

El problema:

Al principio pensé que para cancelar los anteriores, debo proporcionar el requestCode exacto que he usado antes para iniciar la alarma.

Pero luego descubrí que estaba equivocado, como dice la API de cancelación :

Elimine cualquier alarma con un Intento correspondiente. Cualquier alarma, de cualquier tipo, cuyo Intento coincida con este (según lo definido por filterEquals (Intención)), se cancelará.

mirando " filterEquals ", la documentación dice:

Determine si dos intenciones son las mismas para propósitos de resolución de intención (filtrado). Es decir, si su acción, datos, tipo, clase y categorías son los mismos. Esto no compara ningún dato adicional incluido en los intentos.

así que no entiendo para qué es "requestCode" ...

La pregunta:

¿Para qué se usa "requestCode"?

¿Qué sucede si creo varias alarmas con el mismo "requestCode"? ¿se anulan el uno al otro?


Solo quiero agregar a la respuesta @Minhaj Arfin

1- requestCode se usa para obtener el mismo intento pendiente más tarde (para cancelar, etc.)

2- Sí, prevalecerán siempre que especifique el mismo receptor para su intención que usted especifique en su PendingIntent

ejemplo:

Intent startIntent1 = new Intent(context, AlarmReceiverFirst.class); PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, startIntent1, 0); Intent startIntent2 = new Intent(context, AlarmReceiverSecond.class); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, startIntent2, 0);

En el ejemplo anterior, no se anularán entre sí porque el receptor es diferente (AlarmReceiverFirst y AlarmReceiverSecond)

Intent startIntent2 = new Intent(context, AlarmReceiverSecond.class); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, startIntent2, 0); Intent startIntent3 = new Intent(context, AlarmReceiverSecond.class); PendingIntent pendingIntent3 = PendingIntent.getBroadcast(context, 0, startIntent3, 0);

En el ejemplo anterior, se anularán entre sí, porque el receptor es el mismo (AlarmReceiverSecond)