Ответ
Да, но с ограничениями. Начиная с Android 8.0 (API 26), работают ограничения на фоновые сервисы. Для постоянной работы нужно:
- Использовать
startForegroundService()и показать уведомление черезstartForeground()в течение 5 секунд:
val intent = Intent(this, MyService::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent)
} else {
startService(intent)
}
// В сервисе:
override fun onCreate() {
super.onCreate()
val notification = createNotification()
startForeground(NOTIFICATION_ID, notification)
}
-
Для Android 9+ нужно запросить разрешение
FOREGROUND_SERVICE -
Альтернативы:
- WorkManager для отложенных задач
- JobScheduler для периодических задач
- Foreground Service с типом
ServiceInfo.FOREGROUND_SERVICE_TYPE_*
Система все равно может убить сервис при нехватке памяти. Для критических задач (например, звонки) можно добавить android:stopWithTask="false" в манифесте.