Какие знаешь виды Job

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

Ответ

В Android есть несколько видов Job в контексте работы с корутинами и фоновыми задачами:

  1. Job — базовая сущность корутины, управляет её жизненным циклом (запуск, отмена).
    val job = CoroutineScope(Dispatchers.IO).launch { /* work */ }
    job.cancel() // отмена
  1. SupervisorJob — вариант Job, где ошибка в одной дочерней корутине не отменяет другие.
    val scope = CoroutineScope(SupervisorJob())
  1. Deferred (через async) — Job с результатом (аналог Future).
    val deferred = async { fetchData() }
    val result = deferred.await()
  1. CompletableJob — ручное управление завершением (например, для кастомных обработчиков).
    val job = Job()
    job.complete() // явное завершение

Для фоновых задач вне корутин:

  • JobScheduler (API 21+) — системное планирование задач с условиями (например, при зарядке).
  • WorkManager — отложенные или периодические задачи с гарантией выполнения.