Ответ
CoroutineContext — это набор элементов, определяющих поведение корутины. Он включает:
- Job – управляет жизненным циклом корутины (запуск, отмена).
- Dispatcher – определяет поток выполнения (Main, IO, Default).
- ExceptionHandler – обрабатывает неотловленные исключения.
- CoroutineName – имя для отладки.
Контекст можно комбинировать с помощью +:
val context = Dispatchers.IO + Job() + CoroutineName("MyCoroutine")
launch(context) { ... }
Каждый элемент контекста уникален по ключу (например, Job или Dispatcher). При объединении дублирующиеся элементы перезаписываются.