Kotlin Coroutine — корутины за 100 слов
Основные принципы:
• Приостанавливаемые — могут в определенных точках запомнить свое состояние, замереть, дать потоку выполнить часть другой функции, а после продолжить выполнение с той же точки
• Асинхронные — за счет приостанавливаемости функции разбиваются на блоки. Поток может выполнять блоки от разных функций вперемешку
• Прекращаемые — можем прекратить выполнение функции с помощью job.cancel()
Функция замечает, что ее отменили, когда проверяет флаг Job.isActive
Основные понятия:
• CoroutineScope — контейнер для корутин
дает возможность сгруппировать корутины, задать параметры CoroutineContext и отменить сразу все дочерние корутины
корутины могут быть запущены только внутри CoroutineScope
• CoroutineContext — характеристики для CoroutineScope
Например, Dispatcher.Main - это наследник CoroutineContext - задает пул потоков, в котором будут выполняться функции
• suspend — указывает, что функция может содержать асинхронный код
• Job — объект, описывающий состояние корутины
Напримери, содержит флаг isActive
• Deffered<T> — расширяет Job. Позволяет вернуть значение из корутины
Основные билдеры — функции, создающие и сразу запускающие корутину:
• launch — возвращает Job
• async — возвращает Deffered<T>
• suspendCoroutine(cont: Continuation<T>) — возвращает T, который нужно вернуть через колбек cont.resume(obj: T)
Post #55
2.84K