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")
     {}
}