Сервис Android - PullRequest
       15

Сервис Android

13 голосов
/ 04 декабря 2010

Пожалуйста, объясните Android Service. Чем он отличается от Activity? Зависит ли это от состояния приложения, например, от foreground / background ?

Ответы [ 2 ]

29 голосов
/ 04 декабря 2010

Из справочника 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

Удачи, и дайте мне знать, если вам нужна дополнительная информация!

4 голосов
/ 04 декабря 2010

Сервис - это контекст, аналогичный Activity, но без графического интерфейса.

Важно: Сервис не запускается в новом потоке!

Подробнее о Сервис а также проверить Как всегда запускать службу в фоновом режиме?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...