запустить сервис, но так, чтоб foreground он был не всегда, а только при определенных условиях. нормальное ли решение пользоваться старым добрым startService() для всех версий SDK, и вызывать startForeground() только когда это нужно, а не сразу при запуске сервиса?
Foreground сервис нужен тогда когда должна выполняться длительная фоновая операция. Например, воспроизведение музыки, отслеживание геолокации и тд. С foreground сервисом система не убивает приложение когда оно находится в фоне. Начиная с андроид 8 нельзя стартовать сервисы когда пользователь свернул приложение, то-есть, startService() вызовет ошибку в этот момент. Для фоновой работы в таком случае, если не хочешь foreground надо использовать Job сервисы: JobScheduler, JobIntentService или взять готовый враппер над всем этим WorkManager.
Обсуждают сегодня