Что такое "requestCode", используемый для PendingIntent?


Справочная информация:

Я использую PendingIntent для сигнализации через AlarmManager.

проблема:

сначала я подумал, что для того, чтобы отменить предыдущие, я должен предоставить точный код запроса, который я использовал раньше, чтобы запустить будильник.

но потом я узнал, что был неправ, так как отмена API говорит:

удалите все сигналы тревоги с соответствующим намерением. Любая сигнализация, любого типа, чье намерение соответствует этому (как определено filterEquals(Intent)), будут отменены.

глядя на " filterEquals", сказано в документации:

определить, если два намерения являются одинаковыми для целей намерения разрешение (фильтрация). То есть, если их действие, данные, тип, класс, и категории те же самые. При этом не сравниваются никакие дополнительные данные входит в состав намерения.

поэтому я не понимаю, для чего нужен "requestCode"...

вопрос:

для чего используется" requestCode"?

Что делать, если я создаю несколько сигналов тревоги с тем же "requestCode" ? они перекрывают друг друга?

2 78

2 ответа:

  1. requestCode используется для получения того же ожидающего экземпляра намерения позже (для отмены и т. д.).
  2. Да, я предполагаю, что сигналы тревоги будут переопределять друг друга. Я бы сохранил коды запросов уникальными.

Я просто хочу добавить к @ Minhaj Arfin answer

1-requestCode используется для получения того же отложенного намерения позже (для отмены и т. д.)

2-Да, они получат переопределение, если вы укажете тот же приемник для вашего намерения, который вы указываете на своем PendingIntent

пример:

Intent startIntent1 = new Intent(context, AlarmReceiverFirst.class);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, startIntent1, 0);

Intent startIntent2 = new Intent(context, AlarmReceiverSecond.class);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, startIntent2, 0);

сверху пример, они не будет переопределять друг друга потому что приемник-это разные(AlarmReceiverFirst и AlarmReceiverSecond)

Intent startIntent2 = new Intent(context, AlarmReceiverSecond.class);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, startIntent2, 0);

Intent startIntent3 = new Intent(context, AlarmReceiverSecond.class);
PendingIntent pendingIntent3 = PendingIntent.getBroadcast(context, 0, startIntent3, 0);

сверху пример, они будет переопределять друг друга, потому что приемник такой же(AlarmReceiverSecond)