Не понимаю, когда службу можно воссоздать при использовании START_NOT_STICKY

В документации сказано, что при использовании START_NOT_STICKY:

Если система завершает работу службы после возврата из onStartCommand(), не создавайте службу повторно, если нет ожидающих намерений для доставки.

Что значит ожидающие намерения в этом контексте? Когда вы используете startService(Intent), метод onStartCommand() выполняется немедленно. Отложенных намерений нет.


person Martí Serra    schedule 27.06.2020    source источник


Ответы (1)


Когда вы используете startService(Intent), метод onStartCommand() выполняется немедленно

Не обязательно. onStartCommand() вызывается в основном потоке приложения. Следовательно, он будет обрабатывать только один Intent за раз. Однако другие потоки могут вызывать startService() много раз, пока onStartCommand() все еще обрабатывает один Intent. Если это произойдет, эти дополнительные запросы на запуск будут поставлены в очередь, и onStartCommand() будет выполняться для каждого из них по очереди.

person CommonsWare    schedule 27.06.2020
comment
Если есть ожидающие намерения для доставки, будет ли служба onStartCommand выполняться столько раз, сколько ожидающих намерений? - person Martí Serra; 28.06.2020
comment
@MartíSerra: Так и должно быть, да. Всегда есть пограничные случаи (например, пользователь принудительно останавливает приложение из настроек). - person CommonsWare; 28.06.2020