Ресиверы (Broadcast Receivers) реагируют на общесистемные широковещательные сообщения, например, уведомления о низком заряде батареи, подключении сети или фотографировании. Они не имеют визуального интерфейса и выполняют фоновые задачи.
Существует два основных типа:
AndroidManifest.xml. Система запускает приложение при получении соответствующего интента, даже если оно не запущено.Context.registerReceiver(). Работают только пока компонент (например, активность) существует.Каждый ресивер реализует метод onReceive(Context context, Intent intent), где обрабатывается входящий интент.
Контент-провайдеры (Content Providers) управляют общим доступом к структурированным данным. Они предоставляют стандартизированный интерфейс CRUD (Create, Read, Update, Delete) для взаимодействия с данными, хранящимися в различных источниках (SQLite-базы данных, файлы, сетевые данные и т.д.).
Основные методы контент-провайдера:
onCreate(): Инициализация провайдера.query(): Получение данных из источника.insert(): Добавление новых данных.update(): Обновление существующих данных.delete(): Удаление данных.getType(): Возвращает MIME-тип данных по данномуURI.Доступ к контент-провайдеру осуществляется через ContentResolver. URI (Unified Resource Identifier) используется для идентификации конкретного набора данных.
Пример использования ContentResolver для запроса данных:
java
Пример регистрации статического ресивера в AndroidManifest.xml:
xml
Пример реализации ресивера:
java
Ключевые отличия:
| Характеристика | Ресиверы (Broadcast Receivers) | Контент-провайдеры (Content Providers) |
|---|---|---|
| Назначение | Реакция на широковещательные события | Управление доступом к данным |
| Интерфейс | onReceive() | CRUD методы через ContentResolver |
| Визуальное отображение | Отсутствует | Отсутствует |
| Доступ | Получают интенты из системы | Предоставляют данные по запросу |