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

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

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

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") {} } 
  • Как объявляется Intent Service в манифесте Android?
  • Как сохранить фон соединения Bluetooth?
  • Уведомление Push неправильно работает, когда приложение находится в фоновом режиме или не работает
  • Сервис против IntentService
  • остановить службу в android
  • onTaskRemoved () не получает вызов в устройствах HUAWEI и XIOMI
  • Android: сохранить сервис, когда приложение убито
  • ServiceRoute + WebServiceHostFactory убивает генерацию WSDL? Как создать службу WCF без расширения с помощью? Wsdl
  • Служба Google Geocoder недоступна (координаты для адресации)
  • Попытка запуска службы при загрузке на Android
  • Продолжать работу службы
  • Давайте будем гением компьютера.