Как ты использовал ограничения сервиса

«Как ты использовал ограничения сервиса» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При работе с сервисами (например, JobScheduler, WorkManager или ForegroundService) важно учитывать их ограничения:

  • JobScheduler: Минимальный интервал — 15 минут, не гарантирует точное время выполнения. Пример:
val job = JobInfo.Builder(1, ComponentName(this, MyJobService::class.java))  
    .setPeriodic(15 * 60 * 1000)  
    .build()  
jobScheduler.schedule(job)  
  • WorkManager: Ограничения батареи/сети. Для задач, требующих немедленного выполнения, лучше использовать CoroutineWorker или ListenableWorker.

  • ForegroundService: Требует нотификацию, иначе система убьёт процесс. Ограничение на фоновую работу в Android 8+.

Всегда проверяю isIgnoringBatteryOptimizations() и запрашиваю разрешения (REQUEST_IGNORE_BATTERY_OPTIMIZATIONS), если задача критична.