Android onCreate или onStartCommand для запуска службы
обычно, когда я создаю службу Android, я реализую onCreate
метод, но в моем последнем проекте это не работает. Я пытался реализовать onStartCommand
, и это, кажется, работает.
вопрос: когда я должен реализовать сервис, какой метод требуется? Какие методы я должен реализовать? onCreate
,onStartCommand
, или оба? И какова роль каждого?
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") {} }