Активация компонентов
Три из четырёх типов компонентов — Activity (деятельность), Service (сервис), а также Broadcast receivers (получатель широковещательных сообщений) — активируются с помощью асинхронного сообщения Intent (намерение). Intent связывает отдельные компоненты друг с другом во время выполнения, будь то компонент принадлежащий вашему приложению или другой. Intent (намерение) создаётся с помощью класса Intent, который описывает запрос на активацию конкретного компонента или конкретного типа компонента, соответственно Intent может быть явным или неявным. Для Activity и Service, Intent(намерение) определяет действие, которое надо выполнить (например, "Просмотреть" или "Отправить" что-то), и может указать URI (Uniform Resource Identifier — унифицированный идентификатор ресурса) данных необходимых для выполнения. Например, Intent может передать запрос Activity показать изображение или открыть веб-страницу. Для broadcast receivers Intent просто определяет транслируемые сообщения (например, широковещательное сообщения о том, что аккумулятор разряжен содержит только строковую константу обозначающую "батарея разряжена"). Последний компонент - Content provider не активируется с помощью Intent. Хотя он и может вызывается, если Content provider запрашивает данные из ContentResolver. Методы для активации каждого типа компонентов:
Для запуска Activity используются методы startActivity(Intent intent) или startActivityForResult(Intent intent) (если необходимо вернуть результат).
Для запуска Service вызывается метод startService (Intent service).
Для запуска Broadcast reciever — sendBroadcast(Intent intent), sendOrderedBroadcast(Intent intent, String receiverPermission), или sendStickyBroadcast(Intent intent).
Для формирования запроса для Content Provider используется метод query ()
Файл манифеста
Перед запуском любого компонента операционная система Android читает файл манифеста приложения AndroidManifest.xml, чтобы убедиться, что запускаемый компонент существует. В этом файле должны быть объявлены все компоненты приложения, которые находятся в корневой папке приложения. Кроме этого манифест-файл выполняет другие функции:
Определяет пользовательские разрешения, такие как доступ в Интернет или чтение контактов.
Объявление минимального API уровня (версии Android), необходимого для приложения.
Объявление аппаратных и программных требований, такие как камера, Bluetooth, или мультитач экран.
API библиотек с которыми приложение будет связываться, например библиотеки Google Maps.
Но все же основная задача манифеста сообщить системе о компонентах приложения. Например, можно объявить Activity (деятельность) следующим образом:
copy to clipboardподсветка кода
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:icon="@drawable/app_icon.png" ... >
<activity android:name="com.example.project.ExampleActivity"
android:label="@string/example_label" ... >
</activity>
...
</application>
</manifest>
В элементе <application> атрибут Android:icon указывает на ресурсы для иконки приложения. В элементе <activity> атрибут Android:name определяет полный путь на имя класса Activity (деятельности), а атрибут Android:label задаёт заголовок приложения. Для определения компонентов используются: <activity> для Activity (деятельности) <service> для Service (сервисы) <receiver> для Broadcast reciever (получатели широковещательных сообщений) <provider> для Content providers (поставщики данных) Activity (деятельность), Service (сервис) и Content provider (поставщики данных), которые существуют в исходниках, но не заявлены в манифесте не видны системе и, следовательно, не смогут запуститься. Однако, Broadcast provider (получатель широковещательных сообщений) может создаваться динамически в коде (как объекты BroadcastReceiver) и регистрироваться с помощью вызова registerReceiver ().
