Задний план:
Я использую PendingIntent для сигналов тревоги через AlarmManager.
Эта проблема:
Сначала я подумал, что для того, чтобы отменить предыдущие, я должен предоставить точный requestCode, который я использовал раньше, чтобы запустить будильник.
Но потом я обнаружил, что ошибался, поскольку API отмены говорит:
Удалите все тревоги с соответствующим намерением. Любой сигнал тревоги любого типа, намерение которого соответствует этому (как определено filterEquals (Intent)), будет отменено.
глядя на filterEquals , в документации говорится:
Определите, совпадают ли два намерения для целей разрешения намерений (фильтрации). То есть, если их действие, данные, тип, класс и категории совпадают. При этом не сравниваются никакие дополнительные данные, включенные в намерения.
поэтому я не понимаю, для чего нужен "requestCode" ...
Вопрос:
Для чего используется requestCode?
Что, если я создам несколько алармов с одним и тем же «requestCode»? они перекрывают друг друга?
If you truly need multiple distinct PendingIntent objects active at the same time (such as to use as two notifications that are both shown at the same time), then you will need to ensure there is something that is different about them to associate them with different PendingIntents. This may be any of the Intent attributes considered by Intent#filterEquals(Intent), or different request code integers supplied.