Android onCreate или onStartCommand для запуска службы
Обычно, когда я создаю службу Android, я реализую метод onCreate
, но в моем последнем проекте это не работает. Я попытался реализовать onStartCommand
, и это, похоже, работает.
Возникает вопрос: когда мне нужно выполнить сервис, какой метод требуется? Какие методы я должен реализовать? onCreate
, onStartCommand
или и то, и другое? И какова роль каждого из них?
- Android Context.bindService всегда возвращает false, а объект ServiceConnection никогда не запускается
- Использование ResultReceiver в Android
- Служба Android должна запускаться всегда (никогда не останавливать или останавливать)
- Как вы реализуете FileObserver из службы Android
- Использование службы для запуска фона и создания уведомлений
- Как начать приложение только для Android-приложений
- Как создать активность и службу Android, которые используют отдельные процессы
- Android - Периодическая справочная служба - Советы
- Как перезапустить службу после того, как приложение было убито из недавних задач
- Как определить, когда пользователь запускает другое приложение? (Android)
- Служба Windows, не показанная в приложении, удаляет программы под панелью управления
- .aspx vs .ashx ОСНОВНАЯ разница
- Диалоговое окно оповещения из службы Android
onCreate()
вызывается при создании экземпляра объекта Service
(т. е. при создании службы). Вы должны сделать что-то в этом методе, что вам нужно сделать только один раз (т.е.: инициализировать некоторые переменные и т. Д.). onCreate()
будет вызываться только один раз за экземпляр объекта .
Вам нужно всего лишь реализовать onCreate()
если вы действительно хотите / нужно инициализировать что-то только один раз .
onStartCommand()
вызывается каждый раз, когда клиент запускает службу, используя startService(Intent intent)
. Это означает, что onStartCommand()
может вызываться несколько раз. Вы должны делать вещи в этом методе, которые необходимы каждый раз, когда клиент запрашивает что-то из вашей службы. Это сильно зависит от того, что делает ваша служба и как она общается с клиентами (и наоборот).
Если вы не реализуете onStartCommand()
то вы не сможете получить какую-либо информацию от Intent
которое клиент переходит на onStartCommand()
и ваша служба может не выполнять какую-либо полезную работу.
Служба ведет себя так же, как и активность. Независимо от того, что вы хотите
associate
один раз с сервисом, он будетonCreate
как инициализация
и всякий раз, когда вызывается service
с использованием startService . onStartCommand
будет вызван. и вы можете передать любое действие для выполнения. как для музыкального проигрывателя, вы можете играть, приостанавливать, останавливать использование действия
И вы выполняете какую-либо operation in service
, отправляя действие и получая его onStartCommand
onCreate
работать как конструктор.
Редактировать в коротком
onCreate()
вызывает только в первый раз, когда вы запускаете Service
как onStartCommand()
вызывает каждый раз, когда вы снова вызываете startService
. Это позволяет вам настраивать действие, например воспроизведение, остановку, паузу музыки.
public void onStartCommand() { if(intent.getAction.equals("any.play") { //play song } else if(intent.getAction.equals("any.stop") {} }