Можно ли создать несколько PendingIntents с одним и тем же requestCode и разными дополнениями?
м используюAlarmManager
планировать где-нибудь между 1 и 35 сигналами тревоги (в зависимости от ввода пользователя). Когда пользователь запрашивает планирование новых аварийных сигналов, мне нужно отменить текущие аварийные сигналы, поэтому я создаю все свои аварийные сигналы с тем же кодом запроса, определенным вfinal
переменная.
// 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);
}
Здесь, если у пользователя естьsun
(это флажок), он будет планировать срабатывание будильника каждое воскресенье вhour
а такжеminute
, Вы можете видеть, что каждый сигнал тревоги, созданный таким образом, имеет один и тот же код запроса, ноTOOL
дополнительные изменения иногда для каждой тревоги.
Тем не менее, в моем тестировании, когда сработала сигнализация и запущена моя служба, дополнительные функции из Intent теперь.null
Этот вопрос предполагает, что с помощьюPendingIntent.FLAG_CANCEL_CURRENT
решит это, но нене отменяют ли другие PendingIntents?
Может кто-нибудь объяснить, как работает PendingIntents, ссылаясь на создание нескольких из них с одинаковым кодом запроса и разными дополнениями? Какие флаги (если есть) я должен использовать?