context.startForegroundService (startServiceIntent) несколько раз будет вызывать onCreate несколько раз? - PullRequest
2 голосов
/ 11 марта 2019

Если я вызываю context.startForegroundService (startServiceIntent) несколько раз, буду ли я вызывать onCreate () с новым намерением службы несколько раз, или я в первый раз вызову onCreate для нового намерения службы, а затем вызову onStartCommand () / onHandleIntent () несколько раз?

1 Ответ

3 голосов
/ 11 марта 2019

Зависит от того, запущена служба или нет.startForegroundService() вызовет вызов onCreate(), если эта служба еще не запущена.

Так, например:

  • Вы звоните startForegroundService()
  • Android создает экземпляр вашего сервиса и вызывает на нем onCreate()
  • Android затем вызывает на нем onStartCommand() (что может вызывать вызовы других вещей, например onHandleIntent() из IntentService)
  • Вы снова звоните startForegroundService()
  • Android понимает, что у вас есть работающая копия сервиса, и не создает новую, поэтому onCreate() call
  • Android не вызываетonStartCommand() на нем (что может вызывать вызовы на другие вещи, например onHandleIntent() из IntentService)
  • Вы останавливаете свою службу, через что-то вроде stopService() или stopSelf() (или onHandleIntent() возврат, если вы все еще используете IntentService)
  • Вы снова вызываете startForegroundService(), потому что вам действительно нравится этот метод
  • Android создает экземпляр вашей службы и вызывает на нем onCreate()
  • Android затем вызывает на нем onStartCommand() (что может инициировать вызовы на другие вещи, например onHandleIntent() из IntentService)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...