Tło:
Używam PendingIntent do alarmów za pośrednictwem AlarmManager.
Problem:
Na początku pomyślałem, że aby anulować poprzednie, muszę podać dokładny requestCode, którego użyłem wcześniej do uruchomienia alarmu.
Ale potem dowiedziałem się, że się myliłem, ponieważ API anulowania mówi:
Usuń wszystkie alarmy z dopasowaną intencją. Każdy alarm dowolnego typu, którego intencja pasuje do tego (zgodnie z definicją filterEquals (Intent)), zostanie anulowany.
patrząc na „ filterEquals ”, dokumentacja mówi:
Określ, czy dwie intencje są takie same, na potrzeby rozwiązania intencji (filtrowania). Oznacza to, że ich działanie, dane, typ, klasa i kategorie są takie same. Nie porównuje to żadnych dodatkowych danych zawartych w intencjach.
więc nie rozumiem, do czego służy „requestCode” ...
Pytanie:
Do czego służy „requestCode”?
Co się stanie, jeśli utworzę wiele alarmów z tym samym „requestCode”? czy mają pierwszeństwo?
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.