Я продолжаю слышать об услугах и приемниках вещания . В чем разница между ними, и как они влияют на работу моего телефона Android с моей точки зрения?
Я продолжаю слышать об услугах и приемниках вещания . В чем разница между ними, и как они влияют на работу моего телефона Android с моей точки зрения?
Ответы:
Приложения Android имеют три вида компонентов. В общем, пользователям не нужно знать о них: они позволяют авторам приложений программировать в своих приложениях определенное поведение. Но если вы внимательно следите за поведением своих приложений, например, с помощью диспетчера задач, или если вы автоматизируете такие вещи с помощью приложения, такого как Tasker, полезно понять, как они сочетаются друг с другом в системе.
Деятельность является наиболее известным типом компонента: это окно вы можете увидеть: либо полный экран или диалог размера. Действие выполняется только тогда, когда оно отображается на экране. После того как вы покинете действие, Android сохранит это приложение в памяти, готовое к повторному запуску, но действие не запустится, то есть не будет использовать батарею или сеть. Приложение запускает действие, используя намерение . Намерение может явно указать, какое действие следует запустить, или оно может указать действие, которое нужно выполнить (например, открыть определенный файл). Если более чем одно действие может «обработать» намерение, вы увидите диалоговое окно с просьбой выбрать одно.
Сервис является еще одним компонентом приложения. Как только другой компонент (возможно, действие или другая служба) запустил службу, он работает в фоновом режиме, пока не остановится сам. Это означает, что служба может поддерживать ваш телефон в активном состоянии (с помощью блокировки пробуждения ), разряжать батарею или использовать большое количество сетевых данных, при этом на экране ничего не отображается.
Приложения могут использовать службы для выполнения длительных процессов в фоновом режиме, таких как загрузка файлов с сервера, проверка электронной почты или проверка вашего местоположения. Хотя службы не отображаются или не взаимодействуют с вами напрямую, они все равно отображаются в списке «Запущенные приложения». В приложении « Настройки» выберите « Приложения» или « Диспетчер приложений» , а затем « Запуск» . Вы можете остановить службу таким образом, но обычно это не требуется. Поскольку службы не видны напрямую, Android считает их менее важными, чем действия, поэтому они будут убиты первыми, когда вашему телефону потребуется больше памяти.
Вещательные приемники являются третьим видом компонента. Как и сервисы, они существуют только в фоновом режиме и не взаимодействуют с вами напрямую. Но в отличие от сервисов, они не могут работать или выполнять длинные задачи: они существуют, чтобы реагировать на события. И в отличие от действий и услуг, более одного широковещательного приемника можно запустить за один раз.
Компонент передает намерение, возможно, одному приложению, но чаще без указания конкретного приложения. В этом случае намерение обычно представляет событие, которое произошло, например, разрядился аккумулятор. Система находит все широковещательные приемники, которые зарегистрировали интерес (используя фильтр намерений ), и запускает каждый по очереди. Каждый широковещательный приемник может реагировать сразу, например, путем создания уведомления, или он может запустить службу или действие, чтобы предпринять дальнейшие действия. Как только получатель рассылки обработает событие, оно останавливается и больше не запускается, пока не будет передано другое подобное событие.
Примером совместной работы всех трех компонентов является загрузка приложения из Google Play. Во-первых, действие Google Play предоставляет визуальный интерфейс для выбора контента для загрузки. Список приложений может быть одним видом деятельности; Нажатие на кнопку «Установить» запускает другое действие, чтобы показать диалог подтверждения или оплаты. Когда вы подтвердите, диалоговое действие запускает службу. Служба продолжит загрузку содержимого, даже если действие завершено и больше не работает.
Но, возможно, телефон теряет подключение к Интернету во время загрузки нового приложения. Если это произойдет, служба загрузки Google Play зарегистрирует широковещательный приемник с фильтром намерений, чтобы сообщить, что он заинтересован в изменениях сетевого подключения, а затем служба сама прекратит работу. Когда телефон подключается к Интернету, система передает событие. Android запустит широковещательный приемник, зарегистрированный сервисом Google Play, наряду с любым другим широковещательным приемником, ожидающим это событие. В этом случае приемник вещания снова запустит службу загрузки. Служба будет создавать уведомления по мере загрузки, а когда она завершится, она отправит свою собственную рассылку, чтобы сообщить другим приложениям об установке нового пакета, а затем остановится сама. В свою очередь, это запустит широковещательные приемники из других приложений,
В итоге:-