Какой будешь использовать Job в ViewModelScope

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

Ответ

Для фоновых задач в ViewModelScope лучше использовать CoroutineScope.launch с Dispatchers.IO для I/O операций или Dispatchers.Default для CPU-intensive задач. Для отменяемых операций используйте viewModelScope:

viewModelScope.launch(Dispatchers.IO) {
    // Network/database operations
}

viewModelScope.launch(Dispatchers.Default) {
    // Heavy computations
}

Важно:

  • Автоматическая отмена при очистке ViewModel
  • Не использовать GlobalScope
  • Для жизненного цикла вне ViewModel - LifecycleScope
  • Для сложных сценариев можно комбинировать с SupervisorJob()