Разработка мобильных приложений. Соколова В.В. - 160 стр.

UptoLike

Составители: 

160
1. Явные Intents указывают целевой компонент по его имени.
2. Неявные Intents не содержат цель.
Android доставляет явный Intent экземпляру указанного целевого
класса. Чтобы определить, какой компонент должен получить Intent,
нужно только имя компонента.
В отсутствие указанной цели, т.е. в неявном Intent, система Android
должна найти лучший компонент (или компоненты) для обработки
Intent. Она делает это сравнением содержимого объекта Intent с фильт-
рами Intent, структур, ассоциированных с компонентами, которые по-
тенциально могут получать Intents.
3.3.1. Фильтры Intent
Для информирования системы, какие явные Intents они могут об-
работать, activities, сервисы и широковещательные опросы могут иметь
один или более фильтров Intent. Каждый фильтр описывает набор ин-
тентов, которые он хочет получать. Он пропускает интенты нужного
типа. Явный интент всегда доставляется к своей цели независимо от то-
го, что он содержит. Но неявный интент доставляется компоненту,
только если он может пройти через один из фильтров компонента.
Фильтр интентов это экземпляр класса IntentFilter. Одна-
ко, так как система Android должна знать о возможностях компонента
до того, как она может запустить компонент, фильтры интентов обычно
настраиваются не в Java-коде, а в файле манифеста приложения
(AndroidManifest.xml) как элементы intent-filter.
Фильтр имеет поля, которые соответствуют полям action, data
и category объекта Intent. Неявный интент, чтобы попасть к компо-
ненту, должен пройти все три теста. Но так как компонент может иметь
несколько фильтров интентов, то интент, не прошедший один фильтр,
может пройти через другой.
Рассмотрим более подробно каждый из трех тестов:
Фильтр Action. Элемент intent-filter в файле манифеста
содержит действия в виде элементов action.
Например:
<intent-filter . . . >
<action android:name="com.example.project.SHOW_CURRENT"
/>
<action android:name="com.example.project.SHOW_RECENT"
/>
<action android:name="com.example.project.SHOW_PENDING"
/>
. . .
</intent-filter>