Что такое "requestCode", используемый для PendingIntent?
Справочная информация:
Я использую PendingIntent для сигнализации через AlarmManager.
проблема:
сначала я подумал, что для того, чтобы отменить предыдущие, я должен предоставить точный код запроса, который я использовал раньше, чтобы запустить будильник.
но потом я узнал, что был неправ, так как отмена API говорит:
удалите все сигналы тревоги с соответствующим намерением. Любая сигнализация, любого типа, чье намерение соответствует этому (как определено filterEquals(Intent)), будут отменены.
глядя на " filterEquals", сказано в документации:
определить, если два намерения являются одинаковыми для целей намерения разрешение (фильтрация). То есть, если их действие, данные, тип, класс, и категории те же самые. При этом не сравниваются никакие дополнительные данные входит в состав намерения.
поэтому я не понимаю, для чего нужен "requestCode"...
вопрос:
для чего используется" requestCode"?
Что делать, если я создаю несколько сигналов тревоги с тем же "requestCode" ? они перекрывают друг друга?
2 ответа:
requestCode
используется для получения того же ожидающего экземпляра намерения позже (для отмены и т. д.).- Да, я предполагаю, что сигналы тревоги будут переопределять друг друга. Я бы сохранил коды запросов уникальными.
Я просто хочу добавить к @ 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)