Advanced Kotlin Coroutine Cheat sheet (EN, 8М) - статья для Android разработчиков по основным понятиям Kotlin Coroutines
#coroutines #android
#coroutines #android
👍21❤3
Большая статья "Kotlin Coroutines. От А до Я" (28м)
Что внутри
👉 Шпаргалка по корутинам
👉 Зачем нужны корутины?
👉 Suspend в Котлин
👉 Библиотека kotlinx.corourines
👉 Три способа войти в корутинный мир. runBlocking, CoroutineScope и suspend main
👉 Область видимости корутины. CoroutineScope и GlobalScope
👉 CoroutineContext
👉 Job и Deferred
👉 Запуск корутины
👉 Dispatchers. Основные виды диспетчеров и их применения
👉 Способы обработок ошибок
👉 Отмена корутин
👉 Создание своего пользовательского CoroutineScope
#coroutines
Что внутри
👉 Шпаргалка по корутинам
👉 Зачем нужны корутины?
👉 Suspend в Котлин
👉 Библиотека kotlinx.corourines
👉 Три способа войти в корутинный мир. runBlocking, CoroutineScope и suspend main
👉 Область видимости корутины. CoroutineScope и GlobalScope
👉 CoroutineContext
👉 Job и Deferred
👉 Запуск корутины
👉 Dispatchers. Основные виды диспетчеров и их применения
👉 Способы обработок ошибок
👉 Отмена корутин
👉 Создание своего пользовательского CoroutineScope
#coroutines
🔥54👍18❤4
Вышла библиотека KotlinX Coroutines 1.9.0
👩💻 Поддержка Wasm/WASI таргета
👉 limitedParallelism() позволяет задать имя Dispatcher для упрощения дебага. Также это стало стабильным API
👉 JVM. Dispatchers.IO больше не инициализируется при доступе к любому из стандартных Dispatcher
👉 Оператор Flow<T>.chunked(size: Int): Flow<List<T>>
❌ Еще больше deprecated API в BroadcastChannel
🛠 Исправление багов и улучшения
#coroutines #wasm #flow
👉 limitedParallelism() позволяет задать имя Dispatcher для упрощения дебага. Также это стало стабильным API
👉 JVM. Dispatchers.IO больше не инициализируется при доступе к любому из стандартных Dispatcher
👉 Оператор Flow<T>.chunked(size: Int): Flow<List<T>>
🛠 Исправление багов и улучшения
#coroutines #wasm #flow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35👍13❤1👎1
Разбор(4м) способов синхронизации доступа к переменной на примере инкремента int из разных корутин
#coroutines
#coroutines
👍26🔥5
Рекомендую всем кто пользуется корутинами или недавно перешел на них, стоит почитать лучшие практики по их использованию. Они хоть и для Android, но есть много полезного что надо применять на любой платформе
#coroutines #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40❤7
В рекомендациях пишут, что надо делать Inject диспатчеров, но не описывают как это сделать. Я реализую это с помощью собственного класса со всеми CoroutineDispatcher вместо того чтобы использовать квалификаторы для зависимостей в графе, например @Named()
#coroutines #di
#coroutines #di
👍37🎉1
Альтернативный вариант как делать inject CoroutineDispatcher в Dagger без дополнительного класса
#coroutines #di
#coroutines #di
👍58
Короткий разбор(EN,3м) как работает withContext() в Kotlin Coroutines и почему не стоит его активно использовать
#coroutines
#coroutines
3👍19
В процессе дебага корутин вы могли столкнуться с тем что переменная "was optimized out", что является результатом оптимизиации state машины под капотом корутины.
Для того чтобы вся информация оставалась можно во время работы в IDEA включать debug режим работы Kotlin.
kotlin {
compilerOptions {
// Код запускается из IDEA/Android Studio
if (System.getProperty("idea.active") == "true"){
// Включаем режим дебага
freeCompilerArgs = listOf("-Xdebug")
}
}
}
#kotlin #idea #androidstudio #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥12