Ответ
CoroutineScope определяет контекст выполнения корутин и их жизненный цикл. При создании можно указать:
- Dispatcher - определяет поток выполнения (например,
Dispatchers.Main,Dispatchers.IO). - Job - для управления жизненным циклом (отмена всех корутин в scope).
- CoroutineExceptionHandler - обработка необработанных исключений.
Пример:
val scope = CoroutineScope(
Dispatchers.IO + Job() + CoroutineExceptionHandler { _, e ->
Log.e("Scope", "Error: $e")
}
)
Важно: не забывайте отменять scope через scope.cancel(), чтобы избежать утечек памяти.