Как создать свой ViewModelScope

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

Ответ

Для создания ViewModelScope в Android используйте viewModelScope, который автоматически предоставляется классом ViewModel. Он привязан к жизненному циклу ViewModel и отменяется при ее очистке (onCleared).

Пример:

class MyViewModel : ViewModel() {  
    fun fetchData() {  
        viewModelScope.launch {  
            // Код корутины (например, вызов suspend-функций)  
        }  
    }  
}  

Если нужно создать кастомный CoroutineScope (например, для тестов), можно использовать:

private val customScope = CoroutineScope(SupervisorJob() + Dispatchers.Main)  

override fun onCleared() {  
    customScope.cancel()  
    super.onCleared()  
}  

Важно: Для работы viewModelScope добавьте зависимость:

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"