Обновить
6
2
Максим Беспалов@bm9

Android-разработчик

Отправить сообщение

Шпаргалка: Kotlin Coroutine диспетчеры и потоки: где выполняются корутины?

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели4K

Тема 1. Как выглядит Kotlin Coroutine без макияжа

Тема 2. Kotlin suspend функции

Код Kotlin корутин выполняется в потоках, но важно понимать, что корутины не привязаны жестко к конкретным потокам. Их выполнение управляется диспетчерами (Dispatchers), которые определяют, в каком потоке или пуле потоков будет работать корутина.

Как мы обсуждали в Как выглядит Kotlin Coroutine без макияжа при создании корутины создается объект Continuation, в котором содержится код, который выполняет корутина. Код делится на блоки - suspend-функции с помощью switch. Когда код доходит до suspend-функции она вызывается и в неё передается весь текущий объект Continuation и на этом это ответвление switch заканчивается. Suspend-функция по завершению своей работы вызывает метод resume у переданного ей объекта Continuation и таким образом начинается выполнение следующего ответвления switch'a.

Мы всё это вспомнили не просто так:

объект Continuation, который мы обсуждаем на всех этапах передается в специальной обёртке DispatchedContinuation.

Именно на этой обертке и вызывается метод resume, который выделяет поток и вызывает resume у объекта Continuation.

Исходя из изложенного выше мы можем понять механизм смены потока - он может меняться при каждом вызове метода resume у объекта DispatchedContinuation.

Доступны следующие диспетчеры:

Читать далее

Шпаргалка: Kotlin suspend функции

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели2K

Suspend-функции — это специальные функции в Kotlin, предназначенные для работы с корутинами. Они позволяют приостанавливать выполнение кода без блокировки потока, что делает их идеальными для асинхронных операций (например, сетевых запросов, работы с базой данных или долгих вычислений). Ключевое слово suspend указывает компилятору, что функция может быть «приостановлена» и позже возобновлена, не занимая поток исполнения.

Мы можем вызвать suspend функцию только из корутины или из другой suspend функции и это гарантирует нам, что мы будем иметь доступ к Continuation и соответственно сможем написать правильную suspend функцию, которая сможет передать результат своей работы через объект Continuation.

Пока звучит путанно, но на примерах всё встанет на свои места.

Пример объявления:

Читать далее

Шпаргалка: как выглядит Kotlin Coroutine без макияжа

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели912

При создании и запуске корутины компилятор создаст специальный класс

1.      Continuation

Continuation (продолжение) — это объект, который представляет собой состояние выполнения корутины и позволяет возобновить её выполнение после приостановки.

Continuation — это механизм, который позволяет Kotlin Coroutines приостанавливать и возобновлять выполнение. Он является ключевым элементом реализации suspend-функций и асинхронного программирования в Kotlin.

Когда корутина приостанавливается (например, при вызове suspend-функции), её состояние сохраняется в объекте Continuation. Этот объект содержит информацию о том, где именно корутина была приостановлена, и как её можно продолжить после завершения асинхронной операции.

В Kotlin Continuation — это интерфейс, который выглядит следующим образом:

Читать далее

Тестовые джуна (Android)

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.6K

В 2022 г. осенью я решил, что я хочу поменять профессию и стать Android‑разработчиком. К тому моменту я имел более 6 лет опыта работы в области охраны труда, в основном, на производственных предприятиях.

Мой друг в тоже время начал учиться на курсах Яндекс Практикума, также на Android‑разработчика и объяснил как устроено обучение. Я начал обучение в Практикума в конце октября 2022 г. и закончил его в декабре 2023 г.

Это было непростое время. Я приезжал на работу каждый день к 7:00 и тратил 2 часа на обучение, после начинался мой рабочий день. После работы я приезжал домой, ужинал и остаток времени до сна я посвящал обучению.

В декабре 2023 г. я решил, что я готов начинать искать полноценную работу Android‑разработчиком. Я откликался только на те вакансии, в которых было написано, что не требуется опыт. Если кратко: 19 откликов (сюда не входят отклики на стажировки крупных компаний), 5 тестовых заданий, 3 оффера. Из 3 офферов: от одного я отказался из‑за условий (черная небольшая з/п, я — единственный андроид‑разработчик и т. п.).

Первый адекватный оффер я принял и перед выходом на него я получил второй оффер. В итоге на месте по первому офферу я проработал 2,5 дня (с 01 апреля по 03 апреля 2024 г.) и по собственному желанию ушёл в компанию приславшую второй оффер.

Возможно позже я напишу про обучение на курсах Практикума и о дополнительном самостоятельном обучении, но сейчас я бы хотел написать про тестовые задания, которые я выполнял.

Читать далее

Информация

В рейтинге
1 426-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность