Учебное пособие по службам Android: как запустить приложение в фоновом режиме?



Это руководство по службам Android поможет вам понять, как выполнять операции в фоновом режиме, такие как воспроизведение музыки. К нему не прикреплен пользовательский интерфейс.

Часто используя несколько приложений на своем смартфоне, вы можете переключиться с одного приложения на другое, но также убедитесь, что все ваши приложения остаются активными в фоновом режиме. Это не что иное, как услуги, предлагаемые . Итак, эта статья в Руководстве по службам Android поможет вам понять, как работать со службами.

Я буду освещать следующие темы:





Что такое службы Android?

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

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



Заметка: Android.app.Service является подклассом класса ContextWrapper, а служба Android не является потоком или отдельным процессом.

Android - Жизненный цикл сервисов

В жизненном цикле служб Android могут быть две формы служб. Жизненный цикл службы следует двумя разными путями, а именно:

  1. Начал
  2. Связаны

Начал



факториал с использованием рекурсии в c

Служба запускается, когда компонент приложения вызывает startService () метод. После запуска служба может работать в фоновом режиме неограниченное время, даже если компонент, ответственный за запуск, будет уничтожен. Это останавливается с помощью stopService () метод. Служба также может остановить себя, вызвав stopSelf () метод.

Связаны

Служба привязывается, когда компонент приложения связывается с ней, вызывая bindService () . Связанный сервис предлагает интерфейс клиент-сервер, который позволяет компонентам взаимодействовать с сервисом, отправлять запросы и получать результаты. Он обрабатывает межпроцессное взаимодействие (IPC). Клиент может отключить услугу, позвонив в unbindService () метод.

Жизненный цикл службы Android - Учебное пособие по службам Android - Edureka

Переходя к следующему разделу этой статьи, посвященному службам Android, давайте обсудим различныеметоды в классе обслуживания.

Руководство по службам Android: методы

Есть несколько методов, с помощью которых вы можете легко выполнять операции с любым приложением. Некоторые из них:

МетодОписание
onStartCommand ()

Этот метод вызывается, когда любой другой компонент, например действие, запрашивает запуск службы, вызывая startService () .

Вы обязаны остановить службу, когда соответствующая работа будет выполнена с помощью stopSelf () или stopService () методы.

отвязать ()

Вызывает этот метод, когда другой компонент хочет выполнить привязку к службе путем вызова bindService () .

Чтобы реализовать это, вы должны предоставить интерфейс, который клиенты используют для связи со службой. Он возвращает IBinder объект. Если вы не хотите разрешать привязку, верните значение NULL .

onUnbind ()

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

onRebind ()

Вызывает этот метод, когда к службе подключаются новые клиенты после того, как они были ранее уведомлены о том, что все отключены в onUnbind (намерение) .

onCreate ()

Система вызывает этот метод при первом создании службы с использованием onStartCommand () или отвязать () . Требуется разовая настройка.

onDestroy ()

Этот метод вызывается, когда служба больше не используется и уничтожается. Ваша служба должна реализовать это, чтобы очистить любые ресурсы, такие как потоки, зарегистрированные слушатели, приемники и т. Д.

Скелетный код

открытый класс MainActivity расширяет Activity {private TextView textView private BroadcastReceiver Receiver = new BroadcastReceiver () {@Override public void onReceive (контекст контекста, намерение намерения) {Bundle bundle = intent.getExtras () if (bundle! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Загрузка завершена. URI загрузки:' + строка, Toast.LENGTH_LONG) .show () textView.setText ('Загрузка завершена')} else {Toast.makeText (MainActivity.this, 'Ошибка загрузки', Toast.LENGTH_LONG) .show () textView.setText ('Ошибка загрузки')}}}} @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override protected void onResume () {super.onResume ( ) registerReceiver (получатель, новый IntentFilter (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (Receiver)} public void onClick (View view) {Intent intent = new Intent (this, DownloadService.class) // добавляем информацию для службы, какой файл скачать и куда сохранить intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Служба запущена')}}

В этом примере вы можете увидеть такие методы, как onCreate () , onResume () , onPause () . Эти методы составляют структуру Сервисов в Android.

Теперь, перейдя к практической части этого руководства по службам Android, давайте посмотримкак создать сервис и как с этим справиться.

Демо

Давайте посмотрим, как воспроизводить музыку в фоновом режиме. Для этого я буду использовать Andriod Studio .

Шаг 1

Создайте новый пустой проект. Назовите свой проект, щелкните папку Java и щелкните значок Основное занятие . Сначала добавьте Медиа плеер так что вы можете импортировать детали игрока, такие как начало, установить цикл и так далее.

package com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity публичный класс MainActivity расширяет AppCompatActivity {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) MediaPlayer (это Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Примечание. Если вы используете его впервые, не забудьте включить BIOS. Вы можете сделать это, перезапустив вашу систему.

Вам нужно будет добавить виртуальное устройство. Просто нажмите на Откройте диспетчер AVD.

Выберите устройство по вашему выбору, и все готово!

Это будет работать только тогда, когда экран активен, но чтобы это приложение работало даже в фоновом режиме, вам нужно добавить еще несколько строк кода в activity_main.xml файл.

Шаг 2

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

Посмотрим, как это можно сделать.

  • Создайте еще один класс в папке Java и назовите его. Здесь я назвал это ' MyService '.
  • Этот класс расширяет класс Service.
  • Когда у вас есть методы класса Service, реализуйте их, щелкнув alt + Enter.
  • После этого вам нужно переопределить методы. Итак, щелкните правой кнопкой мыши в окне, чтобы получить параметры.
  • Сгенерируйте методы переопределения, выберите onStartCommand () , и OnDestroy ().
  • Отредактируйте onStartCommand () методы, добавив следующий код:
MediaPlayer player = MediaPlayer.create (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Заметка: Удалите этот код в Основное занятие.

  • Это вызовет ошибку с просьбой удалить оператор. Итак, удалите оператор return и объявите MediaPlayer как частный метод и верните START_STICKY . Это вернет начальный статус.
  • Добавить player.stop () в onDestroy () метод.

Шаг 3

Перейти к говядина и заходим в раскладки, нажимаем на android_main.xml чтобы получить XML-файл приложения.

  • Удалите TextView и замените его LinearLayout и добавьте кнопки. Добавьте соответствующий код.
<LinearLayout андроид: ориентация= 'вертикальный' андроид: layout_width= 'match_parent' андроид: layout_height= 'wrap_content' андроид: layout_centerVertical= 'правда' инструменты: ignore= 'MissingConstraints'><Кнопка андроид:мне бы= '@ + id / buttonStart' андроид:текст= 'Запустить службу' андроид: layout_width= 'wrap_content' андроид: layout_height= 'match_parent'/><Кнопка андроид:мне бы= '@ + id / buttonStop' андроид:текст= 'Остановить службу' андроид: layout_width= 'wrap_content' андроид: layout_height= 'match_parent'/>LinearLayout>
  • Как только вы это сделаете, вернитесь к Основное занятие class и добавьте соответствующий код, чтобы связать XML-файл и MyServiceClass.
package com.example.newproject import androidx.appcompat.app.AppCompatActivity общедоступный класс MainActivity расширяет AppCompatActivity реализует View.OnClickListener {частную кнопку запуска, остановку @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R. .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override public void onClick (Просмотр представления ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Шаг 4

Когда вы закончите связывание классов, давайте запустим код.

Примечание. Добавьте имя класса службы в файл AndroidManifyt.xml.

Далее запустим код.

После запуска службы она будет работать в фоновом режиме, даже если открыто другое приложение. Вы можете запустить или остановить службу, нажав на кнопки.

Это простая демонстрация, в которой вы узнали, как работать со службами Android.

На этом мы подошли к концу статьи «Учебник по службам Android».Я надеюсь, что вы понимаете темы, затронутые в этом блоге.

Теперь, когда вы ознакомились с нашим блогом с учебными пособиями по службам Android, вы можете ознакомиться с блогом Edureka чтобы быстрее начать обучение.

Есть вопросы? Не забудьте упомянуть их в комментариях к этому блогу «Учебник по службам Android». Мы вернемся за тобой.