Отрицательные приоритеты в фильтре намерений в файле Android Manifest - PullRequest
1 голос
/ 24 октября 2019

Согласно документации Android, мы можем определить приоритет для фильтров намерений в файле манифеста. Приоритет может быть целым числом с 0, являющимся значением по умолчанию. Также, если мы проверяем API setPriority (int Priority), описывая приоритет, он говорит: Positive values will be before the default, lower values will be after it.

Что означает наличие отрицательного значения приоритета и как это полезно? Я видел много библиотек, использующих -1 в качестве приоритета для фильтров намерений в их файле манифеста.

1 Ответ

1 голос
/ 24 октября 2019

Отрицательные значения указывают, что эти фильтры намерений будут иметь более низкий приоритет. Чем меньше значение для android: priority, тем меньше приоритет, предоставляемый при доставке намерения (например, широковещательная передача).

Пример: считать, что существует широковещательная передача, например: Install Receiver Broadcast. Ваше приложение слушает трансляцию. SDK, который вы использовали в приложении, также прослушивает ту же трансляцию (приоритет установлен на -1). Когда вещание транслируется, ваш приемник приложения получит его первым, а SDK получит его вторым. Это потому, что ваш приемник по умолчанию будет иметь приоритет, установленный на 0.

Это в основном выполняется SDK, потому что эти SDK хотят дать приоритет приложению для обработки их пользовательской логики.

Этот атрибут имеет значение как для действий, так и для получателей широковещательной рассылки: он предоставляет информацию о том, насколько активность может отвечать на намерение, которое соответствует фильтру, по сравнению с другими действиями, которые могут также отвечать на намерение,Когда намерение может быть обработано несколькими действиями с разными приоритетами, Android будет рассматривать только те, которые имеют более высокие значения приоритета, как потенциальные цели для намерения. Он контролирует порядок, в котором широковещательные приемники выполняются для приема широковещательных сообщений. Те с более высокими значениями приоритета вызываются перед теми с более низкими значениями. (Порядок применяется только к синхронным сообщениям; он игнорируется для асинхронных сообщений.) Используйте этот атрибут только в том случае, если вам действительно нужно навязать определенный порядок получения широковещательных сообщений или если вы хотите, чтобы Android предпочитал одно действие другим. Значение должно быть целым числом, таким как «100». Более высокие числа имеют более высокий приоритет. Значение по умолчанию: 0.

...