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