É 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?

Em resumo:

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?

questionAnswers(2)

yourAnswerToTheQuestion