Android onCreate или onStartCommand для запуска службы


обычно, когда я создаю службу Android, я реализую onCreate метод, но в моем последнем проекте это не работает. Я пытался реализовать onStartCommand, и это, кажется, работает.

вопрос: когда я должен реализовать сервис, какой метод требуется? Какие методы я должен реализовать? onCreate,onStartCommand, или оба? И какова роль каждого?

2 76

2 ответа:

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