Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Keyn.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
388.84 Кб
Скачать

2.2 Активация компонентов

Еще раз, заострим внимание на уникальном свойстве системы Android, который заключается в том, что любое приложение может использовать компоненты другого приложения. Например, если вы хотите, чтобы пользователь в вашем приложении сделал фото с помощью камеры устройства, то возможно, есть другое приложение, которое делает это, что и ваше приложение может использовать его функционал, вместо того, чтобы вам самим разрабатывать эту функцию в своем приложении. Вместо этого, вы можете просто запустить компонент в приложение камеры, который делает снимок. Этот компонент сделает фото и вернет его в ваше приложение, так что вы можете использовать это фото в вашем приложении. А для пользователя это будет казаться, как если бы функционал камеры на самом деле является частью вашего приложения. Когда система запускает приложения, то она запускает процесс данного приложения (если он еще не запущен) и создает классы, необходимые для этого компонента. Например, если ваше приложение запускает Activity приложения камеры, чтобы сделать снимок, то эта Activity, запускается в процессе, который принадлежит приложению камеры, а не процессу вашего приложения. Поэтому, в отличие от приложений на большинстве других систем, приложения для Android не имеют единой точки входа (нет функции main (), например).

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

Однако система Android может. Поэтому, чтобы использовать компонент другого приложения, нужно сообщить об этом системе Андроид, что есть намерение (intent) запустить компонент какого-либо приложения, и система запустит этот компонент.

Три из четырех типов компонент – Activity, Services и Broadcast Receivers активируются через асинхронные сообщения, называемые intent (намерение). Интенты (intents) связывают различные компоненты друг с другом в реальном времени (об интентах можно думать, как о посланниках, которые запрашивают какое-либо действие от компонента) и это безотносительно того, является ли данный компонент частью вашего приложения или другого. Четвёртый тип компонентов - Content Provider не активируется индентами (intents). Content Providerактивируется запросом от ContentResolver.

Чтобы система Андроид могла запустить компонент приложения, она должна узнать о его существовании из файлаAndroidManifest.xml. Ваше приложение должно объявить все свои компоненты в этом файле, который должен быть в корне каталога каждого проекта.

Кроме этого, напомним еще раз, манифест-файл выполняет другие функции:

  • Определяет пользовательские разрешения, которые необходимы приложению, такие как доступ в Интернет или чтение контактов;

  • Объявление минимального API уровня (версии Android), необходимого для приложения;

  • Объявление аппаратных и программных требований, такие как камера, Bluetooth, или мультитач экран;

  • API библиотек с которые необходимы приложению, например библиотеки Google Maps.

Но все же основная задача манифеста сообщить системе о компонентах приложения. Например, можно объявить Activity (деятельность) следующим образом:

<?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 ().

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]