Подтвердить что ты не робот

Android Как ставить в очередь несколько намерений в IntentService

Я немного смущен относительно использования IntentService.

  • В документации указано, что IntentService ставит в очередь все намерения, отправленные ему, и обрабатывает их по одному.
  • Я взглянул на код IntentService, и я увидел, что onStartCommand() получает намерение, вызывает onStart(), который отправляет его как сообщение для намерений очередь

Я уверен, что прочитал где-то в документации, что onStartCommand() вызывается системой только один раз, если вы дважды выпускаете startService(), второй вызов не приведет к вызову onStartCommand().
Возможно, я ошибаюсь, потому что я искал эту документацию, и я не могу ее найти. Это противоречит предыдущей концепции, в которой говорится, что вы можете ставить в очередь многие намерения в IntentService через onStartCommand().

Так что мне нужна помощь здесь, как мне ставить в очередь несколько намерений в IntentService?

Я вижу только два варианта:

  • Просто вызовите everytime startService() с разными намерениями

  • Вызовите напрямую onStart() или onStartCommand() (минуя startService())

4b9b3361

Ответ 1

Вы отправляете Intent с помощью Context.startService(), а намерение забирается вашей службой в onHandleIntent().

При первом вызове startService() вызывается вызов службы onStartCommand(). Подумайте об этом как о конструкторе. Последующие вызовы startService() не нужно снова запускать службу, поскольку она уже запущена; они просто приведут к большему количеству вызовов к службе onHandleIntent().