Пожалуйста, объясните Android Service
. Чем он отличается от Activity
? Это зависит от состояния приложения, такого как запуск в переднем плане/фоновом?
Служба Android
Ответ 1
Из ссылки SDK разработчика Android для службы:
Служба - это компонент приложения, представляющий либо приложение, желающее выполнить более длительную работу, не взаимодействуя с пользователем, либо предоставляя функциональные возможности для использования другими приложениями.
Очень важно отметить
что службы, как и другие объекты приложения, запускаются в основном потоке их процесса хостинга. Это означает, что если ваша служба будет делать какие-либо интенсивные работы с ЦП (например, воспроизведение MP3) или блокирование (например, сетевые), она должна создать свой собственный поток, чтобы выполнить эту работу.
Это отличается от активности, которая лучше всего понимается как что-то, что пользователь непосредственно видит и взаимодействует с (пользовательский интерфейс).
Служба, как упоминалось выше, может использоваться для более длительных операций, которые будут продолжаться, даже если у вас нет активности переднего плана, но они могут и в конечном итоге будут уничтожены жизненным циклом Android, если оставить его в "фоновом" состоянии. Если вам нужно, чтобы ваша служба продолжала работать как один экземпляр, не будучи убитой и перезапущенной, я бы рекомендовал разместить startForeground (int id, уведомление) в вашей службе onCreate
метод и stopForeground (boolean removeNotification) в вашем сервисе onDestroy
.
Например, у меня есть приложение, которое использует foreground Service
для записи данных акселерометра всю ночь, в то время как устройство Android находится рядом с телом пользователя. Хотя не обязательно быть активным, у меня также есть Activity
, который передает Intent
в BroadcastReceiver
внутри Service
, который сообщает Service
, что он также должен транслировать Intent
с данными акселерометра как дополнение к BroadcastReceiver
внутри Activity
.
код: SleepActivity SleepAccelerometerService
Удачи и дайте мне знать, если вам нужна дополнительная информация!
Ответ 2
Служба - это контекст, подобный Activity, но не имеющий графического интерфейса.
Важно: служба не запускается в новом потоке!
Прочитайте Service, а также проверьте Как всегда запускать службу в фон?