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