É possível criar vários PendingIntents com o mesmo requestCode e diferentes extras?
estou a usarAlarmManager
para agendar em qualquer lugar entre 1 e 35 alarmes (dependendo da entrada do usuário). Quando o usuário solicita para agendar novos alarmes, eu preciso cancelar os alarmes atuais, então eu crio todos os meus alarmes com o mesmo requestCode, definido em umfinal
variável.
// clear remaining alarms
Intent intentstop = new Intent(this, NDService.class);
PendingIntent senderstop = PendingIntent.getService(this,
NODIR_REQUESTCODE, intentstop, 0);
am.cancel(senderstop);
// loop through days
if (sched_slider.getBooleanValue())
for (int day = 1; day < 8; day++) {
if (day == 1 && sun.isChecked())
scheduleDay(day);
if (day == 2 && mon.isChecked())
scheduleDay(day);
if (day == 3 && tue.isChecked())
scheduleDay(day);
if (day == 4 && wed.isChecked())
scheduleDay(day);
if (day == 5 && thu.isChecked())
scheduleDay(day);
if (day == 6 && fri.isChecked())
scheduleDay(day);
if (day == 7 && sat.isChecked())
scheduleDay(day);
}
...
public void scheduleDay(int dayofweek) {
Intent toolintent = new Intent(this, NDService.class);
toolintent.putExtra("TOOL", "this value changes occasionally");
PendingIntent pi = PendingIntent.getService(this,
NODIR_REQUESTCODE, toolintent, 0);
calendar.set(Calendar.DAY_OF_WEEK, dayofweek);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
am.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY * 7, pi);
}
Aqui, se o usuário tiversun
(que é um CheckBox) marcado, ele irá programar um alarme para ser executado todos os domingoshour
eminute
. Você pode ver que todos os alarmes criados dessa maneira têm o mesmo requestCode, mas oTOOL
mudanças extras às vezes para cada alarme.
No entanto, no meu teste, quando o alarme dispara e meu serviço é executado, os extras da intenção são agoranull
. Essa questão sugere que usandoPendingIntent.FLAG_CANCEL_CURRENT
vai resolver isso, mas isso não cancelaria os outros PendingIntents?
Alguém pode explicar como o PendingIntents funciona, em referência à criação de múltiplos com o mesmo requestCode e diferentes extras? Quais sinalizadores (se houver) eu deveria estar usando?