Ответ
В CoroutineScope с Context можно выполнять различные операции, например:
- Запуск корутин:
val scope = CoroutineScope(Dispatchers.Main)
scope.launch {
// Работа с UI
}
- Отмена всех корутин при уничтожении компонента:
scope.cancel() // Отменяет все дочерние корутины
- Изменение контекста:
val newScope = scope + Dispatchers.IO
- Обработка ошибок через
CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, throwable ->
Log.e("Scope", "Error", throwable)
}
val scope = CoroutineScope(Dispatchers.Main + handler)
Важно избегать утечек памяти - не использовать Activity/Fragment контекст напрямую в долгоживущих скоупах.