Czy można utworzyć wiele elementów PendingIntent z tym samym kodem żądania i różnymi dodatkami?

używamAlarmManager zaplanować od 1 do 35 alarmów (w zależności od danych wprowadzonych przez użytkownika). Gdy użytkownik zażąda zaplanowania nowych alarmów, muszę anulować bieżące alarmy, więc tworzę wszystkie moje alarmy za pomocą tego samego kodu żądania, zdefiniowanego wfinal zmienna.

// 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);
}

Tutaj, jeśli użytkownik masun (który jest CheckBox) zaznaczone, zaplanuje alarm do uruchomienia w każdą niedzielę ohour iminute. Widać, że każdy alarm utworzony w ten sposób ma ten sam kod żądania, aleTOOL dodatkowe zmiany czasami dla każdego alarmu.

Jednak w moich testach, kiedy alarm się włącza, a moja Usługa działa, dodatki z Intencji są teraznull. To pytanie sugeruje użyciePendingIntent.FLAG_CANCEL_CURRENT rozwiąże to, ale czy to nie anuluje innych PendingIntents?

W skrócie:

Czy ktoś może wyjaśnić, jak działają PendingIntents w odniesieniu do tworzenia wielu z tym samym kodem requestCode i różnymi dodatkami? Jakich flag (jeśli w ogóle) należy używać?

questionAnswers(2)

yourAnswerToTheQuestion