#kotlin_coroutines

2025-12-02

Как мы создали деплой-инструмент для 100+ серверов на Jetpack Compose и GitLab API

Всем привет! Меня зовут Сергей, и я Backend Kotlin разработчик в компании занимающейся разработкой систем повышающую безопасность дорожного движения. И я расскажу, как мы с помощью Jetpack Compose и GitLab API упростили процесс деплоя на 100+ распределённых серверов, повысив при этом удобство и предсказуемость процесса.

habr.com/ru/articles/972588/

#jetpack_compose #deployment #deploy #deployment_tools #kotlin #kotlin_multiplatform #kotlin_coroutines #gitlab #git #ci

2025-12-01

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

Тема 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. Доступны следующие диспетчеры:

habr.com/ru/articles/971126/

#kotlin_coroutines #kotlin #dispatchers #suspend_fun

2025-11-26

Управление потоком в Kotlin Flow

Поколение большого пальца – вот как нас называли. Какие глубокомысленные переписки мы ухитрялись вести на кнопочных телефонах, набирая текст SMS большим пальцем асинхронно с конспектированием лекций… Когда пользователь печатает или вообще взаимодействует с приложением слишком быстро, возникает опасность гиперотзывчивости. Приложение вынуждено реагировать на всякий чих, а в таких случаях, как известно, не наздравствуешься. Естественно, в Kotlin Flow, где данные текут непрерывным потоком и легко провоцируют избыточные реакции, эта проблема стоит особенно остро. Например, если мы построим на Flow систему автодополнений, то увидим что-то такое:

habr.com/ru/articles/970236/

#асинхронное_программирование #потоки_данных #flow #корутины #kotlin #kotlin_coroutines

2025-11-24

KRepo: Spring Data для Ktor — без Spring и без боли

KRepo: Никаких имплементаций или инъекций. Под капотом — динамический прокси, кэширование метаданных и независимость от фреймворков: плагины под Exposed, JDBC или MongoDB реализуются отдельно.

habr.com/ru/articles/969730/

#kotlin #kotlin_coroutines #ktor #spring_data #jdbc

2025-07-21

«Open Tracker: как разработать Android-приложение для автоматического трекинга коммерческих представителей. Часть 1»

Эта статья посвящена созданию Android-приложения для решения практической задачи — отслеживания местоположения коммерческих представителей в полевых условиях. Статья может быть полезна широкому кругу Android-разработчиков как с точки зрения использования готового решения, так и с точки зрения реализации отдельных компонентов приложения для применения в своих проектах.

habr.com/ru/articles/929436/

#трекер #foreground_service #flow #kotlin_coroutines #gpsтрекинг #compose

2025-03-10

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

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

habr.com/ru/articles/888932/

#kotlin_coroutines #suspend

2025-02-21

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

При создании и запуске корутины компилятор создаст специальный класс 1. Continuation Continuation (продолжение) — это объект, который представляет собой состояние выполнения корутины и позволяет возобновить её выполнение после приостановки. Continuation — это механизм, который позволяет Kotlin Coroutines приостанавливать и возобновлять выполнение. Он является ключевым элементом реализации suspend-функций и асинхронного программирования в Kotlin. Когда корутина приостанавливается (например, при вызове suspend-функции), её состояние сохраняется в объекте Continuation. Этот объект содержит информацию о том, где именно корутина была приостановлена, и как её можно продолжить после завершения асинхронной операции. В Kotlin Continuation — это интерфейс, который выглядит следующим образом:

habr.com/ru/articles/882988/

#kotlin_coroutines #continuation #kotlin

2025-02-20

Kotlin Coroutines под капотом: CoroutineContext и CoroutineScope

Structured Concurrency это одна из главных фишек Kotlin Coroutines, позволяющая оперировать иерархиями корутин через единый интерфейс, благодаря такой организации можно легко отменить сразу все корутины, имея ссылку только на самый высокоуровневый объект. В этой статье я разберу две базовые штуки на основе которых строится Structured Concurrency - CoroutineContext и CoroutineScope. Поехали!

habr.com/ru/articles/883588/

#android #android_development #kotlin #kotlin_coroutines #kotlin_coroutines_internals #algorithms #coroutines #coroutines_internals #data_structures

2025-01-12

Kotlin Coroutines под капотом: отмена корутин

В прошлой статье я разобрал как работают корутины под капотом, однозначно рекомендую ознакомиться прежде чем закапываться дальше. В этой статье мы разберем такую сущность как Job и как на самом деле под капотом отменяются корутины, в общем будет интересно, погнали!

habr.com/ru/articles/873076/

#kotlin #coroutines #android #internals #kotlin_coroutines #coroutines_internals #kotlin_coroutines_internals #computer_science

2025-01-08

Управление событиями в ViewModel с помощью StateFlow, SharedFlow и Channel

Сообщество Android-разработчиков уже долгое время ведёт жаркие споры о том, что лучше использовать в ViewModel для представления событий: StateFlow, SharedFlow или Channel . В этой статье мы разберёмся в различиях между этими тремя подходами и определим, какой из них наиболее подходит для ваших нужд.

habr.com/ru/articles/872248/

#mvvm #kotlin #stateflow #state #events #android #kotlin_coroutines

2024-11-05

Сравнение операторов RxJava 3 и Kotlin Coroutines Flow

Привет, Хабр! Меня зовут Константинов Александр, я Android-разработчик в «Студии Олега Чулакова». Сегодня мы сравим операторы RxJava 3 и Flow. Статья будет полезна как для изучения операторов, так и для более легкого перехода с RxJava на Flow.

habr.com/ru/articles/856106/

#kotlin #kotlin_coroutines #kotlin_flow #rx #rxjava

2024-08-17

[Перевод] Key-Value Хранилище на Стероидах

Как абстрагироваться от Key-Value хранилища и забыть про бойлерплейт внутри репозиториев с помощью Kotlin делегатов

habr.com/ru/articles/836690/

#koitlin #android #keyvalue_storage #kotlin_multiplatform #kotlin_coroutines #coroutine #coroutines #storage

2024-07-11

Kotlin Coroutines под капотом

Вероятнее всего у вас спрашивали на собесе "как работают корутины под капотом?", вы не долго думая выбрасывали что-то в стиле "там под капотом стейт-машина, она определяет какая suspend функция будет выполняться", но понимали ли вы на самом деле всё о чем говорили? Возможно, только вам это известно, но если честно я очень плохо понимал собственные ответы на такие вопросы как бы это парадоксально не звучало и даже после десятка пройденных собесов у меня не было полноценной картины как работает внутрянка этой поистине невероятной библиотеки "сладкой асинхронщины".

habr.com/ru/articles/827866/

#kotlin #kotlin_coroutines #android #android_development #internals #coroutines

2024-07-07

Как я перестал волноваться и полюбил ошибки в корутинах: поймай меня если сможешь

Если опираться на предыдущую статью ( ссылка ), то по отношению к корутине можно сказать что на андроиде она вызовет краш приложения, если не был переопределен Thread.UncaughtExceptionHandler потока. Но во всех ли случаях такое будет? Или можно ли не изменяя корутину и не изменяя Thread.UncaughtExceptionHandler потока помешать данной корутине закрыть приложение с крашем?

habr.com/ru/articles/827188/

#android #coroutine #coroutines #kotlin #exception_handling #kotlin_coroutines #android_development

2024-07-03

Kotlin Coroutines. Часть 2

Прошло так много времени с прошлой статьи, прошу прощения, что заставил вас ждать. Выпускной курс забирал слишком много времени и не было возможности написать столь серьезный материал. Итак, начинаем. Сначала кратко расскажу о материале в этой статье. Для разогрева поговорим о скоупе и о том, для чего он вообще нужен, далее перейдем к контексту, там я попробую объяснить сложное на пальцах, и, наконец, затронем к Continuation.

habr.com/ru/companies/reksoft/

#kotlin #kotlin_coroutines #программирование #coroutines #continuation #threadlocal #dispatcher #runblocking #coroutine #scope

2024-03-26

Kotlin Coroutines. Часть 1: Первое погружение

Привет, Хабр! Меня зовут Соловьев Андрей, я Java-разработчик в «Рексофт». Сегодня мы поговорим про Kotlin Coroutines. Это моя первая серьезная публикация, и я буду рад вашему фидбеку. Ну что ж, давайте начинать!

habr.com/ru/companies/reksoft/

#kotlin #kotlin_coroutines #программирование

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst