Рубрика: Kotlin

  • Context

    Для выполнения каждой Корутины нужен CoroutineContext. А если точнее CoroutineContext-ы). А если еще точнее то компоненты наследники от класса CoroutineContext. Это необходимые компоненты, которые нужны для контроля над корутиной, переключения потоков выполнения, обработки ошибок и т.д. Но где и куда его вставлять? =) В предыдущих примерах мы уже встраивали и использовали CoroutineContext. Помните Job-у, которую…

  • Builders

    Билдер launch()Начнем с билдера launch. Мы уже использовали его в прошлых уроках, чтобы создавать корутины. Но у него есть еще пара возможностей, о которых надо рассказать отдельно. В прошлом уроке мы рассматривали такой пример: Мы выяснили, что билдер launch создает и запускает корутину. Билдер не ждет, пока корутина выполнится, и не блокирует выполнение метода onRun.…

  • Scope

    Scope можно в чем-то сравнить с Активити Андроида. Если весь ЮИ отрисовывается в рамках Активити и нигде больше, то также и с Корутинами. Их можно запустить в рамках Scope-а. Также и suspend-функции запускаются в рамках scope-а. По примеру борща, scope можно сравнить с тарелкой, в котором будет борщ=) Scope который отменяется за собой отменяет дочерние…

  • Continuation. Не «Магия» корутин

    А теперь давайте посмотрим на то как происходит не блокирование потока и отсутствие колбэков «под капотом». Если честно, то колбэки все же есть=) Не все так просто, но и не сложно! Корутины используют специальный механизм Continuation. Continuation можно рассматривать как колбэк. Continuation — похож на огромную стейт-машину, где на каждый кусок Корутин-кода(Suspend-функции) есть свой Switch-Case.…

  • Suspend-функция

    Давайте поговорим об одном из компонентов составляющих понятия Корутины Suspend-функции. Помните мы говорили о том что Корутины не блокируют поток, а приостанавливают работу кода. Ну так вот, такое свойство обеспечивает Suspend-функция. То есть, код который вписан в тело Suspend-функции при запуске не заблокирует поток, но этот код приостановит свою работу. Это означает что мы можем…

  • Что же такое Корутина?

    Для новичка-джуна, который еще плохо знает что такое потоки, синхронность-асинхронность, многопоточность, понять такую тему будет очень сложно. Особенно если в статьях-видосах начинают сразу же грузить такими терминами как Coroutine Builders, Scopes, Jobs и т.д. Для того чтобы максимально просто объяснить что такое Корутина я приведу два примера из обычной жизни: Борщ. Борщ не растет на…

  • Kotlin

    Мысли о Kotlin. Зачем переходить? Какой профит?