Какой код запроса в PendingIntent в android studio - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь понять этот код

Intent activityIntent = new Intent(this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, activityIntent, 0);

Я хочу понять эти параметры в Pending Intent и что будут делать эти строки кода

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Целочисленный параметр requestCode - это способ различать несколько целей, имеющих одно и то же действие, данные, тип, идентификатор, класс и категории. В противном случае, если вы создадите второе намерение с теми же свойствами, даже если дополнения будут другими, он не будет работать.

Из документации

PendingIntent сам по себе является просто ссылкой на токен, поддерживаемый системой, описывающий исходные данные, использованные для его получения. Это означает, что даже если процесс приложения-владельца будет убит, сам PendingIntent останется доступным для использования другими процессами, которым он был предоставлен. Если позднее создающее приложение повторно извлекает тот же тип PendingIntent (та же операция, такое же действие Intent, данные, категории и компоненты, а также те же флаги), оно получит PendingIntent, представляющий тот же токен, если он все еще действителен, и может поэтому вызовите cancel (), чтобы удалить его.

Из-за такого поведения важно знать, когда два намерения считаются одинаковыми для целей получения PendingIntent. Распространенной ошибкой, которую допускают люди, является создание нескольких объектов PendingIntent с намерениями, которые различаются только своим «дополнительным» содержимым, ожидая каждый раз получать другой PendingIntent. Этого не бывает. Для сопоставления используются те же части намерения, которые определены в Intent # filterEquals (Intent). Если вы используете два объекта Intent, которые эквивалентны согласно Intent # filterEquals (Intent), тогда вы получите одно и то же PendingIntent для них обоих.

Есть два типичных способа справиться с этим.

Если вам действительно нужно несколько разных объектов PendingIntent, активных одновременно (например, для использования в качестве двух одновременно отображаемых уведомлений), то вам нужно будет убедиться, что в них есть что-то отличное, чтобы связать их с разными PendingIntents. Это может быть любой из атрибутов Intent, учитываемых Intent # filterEquals (Intent), или разные код запроса целые числа, предоставленные getActivity (Context, int, Intent, int), getActivities (Context, int, Intent [] , int), getBroadcast (Context, int, Intent, int) или getService (Context, int, Intent, int).

Кстати, вы правы, документация по спецификациям c параметр, Код приватного запроса для отправителя на мой взгляд не очень помогает.

0 голосов
/ 19 июня 2020

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

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