Android Как ставить в очередь несколько намерений в IntentService
Я немного смущен относительно использования IntentService.
- В документации указано, что IntentService ставит в очередь все намерения, отправленные ему, и обрабатывает их по одному.
- Я взглянул на код IntentService, и я увидел, что onStartCommand() получает намерение, вызывает onStart(), который отправляет его как сообщение для намерений очередь
Я уверен, что прочитал где-то в документации, что onStartCommand() вызывается системой только один раз, если вы дважды выпускаете startService(), второй вызов не приведет к вызову onStartCommand().
Возможно, я ошибаюсь, потому что я искал эту документацию, и я не могу ее найти.
Это противоречит предыдущей концепции, в которой говорится, что вы можете ставить в очередь многие намерения в IntentService через onStartCommand().
Так что мне нужна помощь здесь, как мне ставить в очередь несколько намерений в IntentService?
Я вижу только два варианта:
Ответы
Ответ 1
Вы отправляете Intent
с помощью Context.startService()
, а намерение забирается вашей службой в onHandleIntent()
.
При первом вызове startService()
вызывается вызов службы onStartCommand()
. Подумайте об этом как о конструкторе. Последующие вызовы startService()
не нужно снова запускать службу, поскольку она уже запущена; они просто приведут к большему количеству вызовов к службе onHandleIntent()
.