Android onCreate или onStartCommand для запуска службы
Обычно, когда я создаю службу Android, я реализую метод onCreate
, но в моем последнем проекте это не работает. Я попытался реализовать onStartCommand
, и это, похоже, сработает.
Вопрос: когда мне нужно выполнить сервис, какой метод требуется? Какие методы я должен реализовать? onCreate
, onStartCommand
или оба? И какова роль каждого?
Ответы
Ответ 1
onCreate()
вызывается при создании объекта Service
(т.е. при создании ). Вы должны сделать что-то в этом методе, что вам нужно сделать только один раз (т.е.: инициализировать некоторые переменные и т.д.). onCreate()
будет вызываться только один раз для каждого объекта.
Вам нужно всего лишь реализовать onCreate()
, если вам действительно нужно/нужно инициализировать что-то только один раз.
onStartCommand()
называется каждый раз, клиент запускает службу с помощью startService(Intent intent)
. Это означает, что onStartCommand()
можно вызвать несколько раз. Вы должны делать вещи в этом методе, которые необходимы каждый раз, клиент запрашивает что-то из вашей службы. Это сильно зависит от того, что делает ваша служба и как она общается с клиентами (и наоборот).
Если вы не реализуете onStartCommand()
, то вы не сможете получить информацию из Intent
, которую клиент передает в onStartCommand()
, и ваша служба может не выполнить какую-либо полезную работу.
Ответ 2
Служба ведет себя так же, как Activity. Если вы хотите 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")
{}
}