Ist es möglich, mehrere PendingIntents mit demselben requestCode und verschiedenen Extras zu erstellen?

Ich benutzeAlarmManager um irgendwo zwischen 1 und 35 Alarme einzuplanen (abhängig von der Benutzereingabe). Wenn der Benutzer neue Alarme einplanen möchte, muss ich die aktuellen Alarme abbrechen, damit ich alle meine Alarme mit demselben RequestCode erstelle, der in a definiert istfinal Variable.

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

Hier, wenn der Benutzer hatsun Wenn dieses Kontrollkästchen aktiviert ist, wird jeden Sonntag um ein Alarm ausgelösthour undminute. Sie können sehen, dass jeder auf diese Weise erstellte Alarm denselben requestCode hat, aber denTOOL zusätzliche Änderungen manchmal für jeden Alarm.

Bei meinen Tests, bei denen der Alarm ausgelöst wird und mein Dienst ausgeführt wird, sind die Extras aus dem Intent jetztnull. Diese Frage schlägt vor, dass mitPendingIntent.FLAG_CANCEL_CURRENT wird das lösen, aber würde das nicht die anderen PendingIntents aufheben?

Zusamenfassend:

Kann jemand erklären, wie PendingIntents funktionieren, indem er mehrere mit demselben requestCode und verschiedenen Extras erstellt? Welche Flags (falls vorhanden) sollte ich verwenden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage