Sfondo:
Sto usando PendingIntent per gli allarmi tramite AlarmManager.
Il problema:
All'inizio ho pensato che per cancellare i precedenti, dovevo fornire l'esatto requestCode che ho usato prima per far partire l'allarme.
Ma poi ho scoperto che mi sbagliavo, come dice l' API di cancellazione :
Rimuovi tutti gli allarmi con un intento corrispondente. Qualsiasi allarme, di qualsiasi tipo, il cui Intent corrisponde a questo (come definito da filterEquals (Intent)), verrà annullato.
guardando " filterEquals ", la documentazione dice:
Determina se due intenti sono uguali ai fini della risoluzione dell'intento (filtraggio). Cioè, se la loro azione, i dati, il tipo, la classe e le categorie sono gli stessi. Questo non confronta i dati aggiuntivi inclusi negli intenti.
quindi non capisco a cosa serva "requestCode" ...
La domanda:
A cosa serve "requestCode"?
Cosa succede se creo più allarmi con lo stesso "requestCode"? si sovrascrivono a vicenda?
If you truly need multiple distinct PendingIntent objects active at the same time (such as to use as two notifications that are both shown at the same time), then you will need to ensure there is something that is different about them to associate them with different PendingIntents. This may be any of the Intent attributes considered by Intent#filterEquals(Intent), or different request code integers supplied.