Обычно, когда я создаю службу Android, я реализую этот onCreate
метод, но в моем последнем проекте это не работает. Я пробовал реализовать onStartCommand
, и, похоже, это сработало.
Возникает вопрос: когда мне нужно реализовать услугу, какой метод потребуется? Какие методы мне нужно реализовать? onCreate
, onStartCommand
или оба? И какова роль каждого?
android
android-service
oncreate
GVillani82
источник
источник
onCreate
всегда называется независимоОтветы:
onCreate()
вызывается при созданииService
экземпляра объекта (т.е. когда услуга создана ). В этом методе вы должны делать то, что вам нужно сделать только один раз (например, инициализировать некоторые переменные и т. Д.).onCreate()
будет вызываться только один раз для каждого экземпляра объекта .Вам нужно только реализовать,
onCreate()
если вы действительно хотите / нужно что-то инициализировать только один раз .onStartCommand()
вызывается каждый раз, когда клиент запускает службу с помощьюstartService(Intent intent)
. Это означает, что егоonStartCommand()
можно вызывать несколько раз. В этом методе вы должны делать то, что необходимо каждый раз, когда клиент запрашивает что-то у вашей службы. Это во многом зависит от того, что делает ваш сервис и как он общается с клиентами (и наоборот).Если вы не реализуете его,
onStartCommand()
вы не сможете получить какую-либо информацию отIntent
клиента,onStartCommand()
и ваша служба не сможет выполнять какую-либо полезную работу.источник
startService()
, если служба не запущена, Android создаст экземпляр класса службы (это объект службы), а затем вызоветonCreate()
этот объект. Затем он вызоветonStartCommand()
этот объект. Если через некоторое время вы снова позвонитеstartService()
, если служба все еще работает, Android не создаст новый объект службы. Вместо этого он просто вызоветonStartCommand()
существующий объект службы. Это ясно?и всякий раз, когда
service
вызывается с помощью startService .onStartCommand
будет называться. и вы можете передать любое действие для выполнения. как и в музыкальном плеере, вы можете играть, приостанавливать, прекращать использование действийИ вы делаете любое
operation in service
, отправляя действие и получая его наonStartCommand
onCreate
работать как конструктор.Редактировать вкратце
onCreate()
звонит только в первый раз, когда вы начинаете, тогдаService
какonStartCommand()
звонит каждый раз, когда вы звонитеstartService
снова. Это позволяет вам установить действие, такое как воспроизведение, остановка, приостановка музыки.источник