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?
Kann jemand erklären, wie PendingIntents funktionieren, indem er mehrere mit demselben requestCode und verschiedenen Extras erstellt? Welche Flags (falls vorhanden) sollte ich verwenden?