Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
📺 Kotlin Coroutines Flow. StateFlow. SharedFlow || Курс по корутинам #7 (20 мин)
Разбираемся схолодными потоками данных в корутинах - Flow, SharedFlow и StateFlow, а также особенностями их работы. В видео вас жду лайвкодинги (как вы и просили) ну а дальше будут отдельные видео по этой теме.
Весь курс сделан при поддержке компании Revolut. Все ролики можно найти здесь
#AndroidBroadcast #курс #coroutines
Разбираемся с
Весь курс сделан при поддержке компании Revolut. Все ролики можно найти здесь
#AndroidBroadcast #курс #coroutines
📺 Корутины в Android. Специальные API || Курс по корутинам #8 (8 мин)
Собираем все полученные знания, чтобы узнать как их адаптировать к Android разработке и какие специальные API сделали в Jetpack
Весь курс, который сделан при поддержке компании Revolut, можно найти здесь
#AndroidBroadcast #курс #coroutines
Собираем все полученные знания, чтобы узнать как их адаптировать к Android разработке и какие специальные API сделали в Jetpack
Весь курс, который сделан при поддержке компании Revolut, можно найти здесь
#AndroidBroadcast #курс #coroutines
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Магия Dispatcher'ов и как сделать свой Main
Разбор работы CoroutineDispatcher в корутинах, а главное как работает Dispatchers.Main в Android
#coroutines #android
Разбор работы CoroutineDispatcher в корутинах, а главное как работает Dispatchers.Main в Android
#coroutines #android
Consuming flows safely in Jetpack Compose (5 мин)
В статье разбирается как подписываться на Flow из Compose с учетом ЖЦ в Android. Для этого служит новое API - collectAsStateWithLifecycle (доступно альфа версии Lifecycle 2.6.0), которое под капотом использует repeatOnLifecycle. Новое API рекомендуется на замену collectAsState в большинстве случаев.
#compose #coroutines
В статье разбирается как подписываться на Flow из Compose с учетом ЖЦ в Android. Для этого служит новое API - collectAsStateWithLifecycle (доступно альфа версии Lifecycle 2.6.0), которое под капотом использует repeatOnLifecycle. Новое API рекомендуется на замену collectAsState в большинстве случаев.
#compose #coroutines
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Exploring "select" expression of Kotlin coroutines
select - это специальная функция, которая дожидается результата нескольких suspend функций и возвращает результат первой выполнившейся. В статье разбираются ее подробности и применение
В комментариях пишите примеры использования такой функции на практике
#coroutines
select - это специальная функция, которая дожидается результата нескольких suspend функций и возвращает результат первой выполнившейся. В статье разбираются ее подробности и применение
В комментариях пишите примеры использования такой функции на практике
#coroutines
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Вышел Coil 2.6.0:
👉 Оптимизации для лучшей работы с Compose
🛠️ Исправление багов
👉 Kotlin 1.9.22 и обновление других зависимостей
#coroutines #library
👉 Оптимизации для лучшей работы с Compose
🛠️ Исправление багов
👉 Kotlin 1.9.22 и обновление других зависимостей
#coroutines #library
Статья (EN, 8 мин) с разбором API для запуска Kotlin Coroutines в Android приложении в связке с жизненным циклом
🔗 Ссылка без VPN
#coroutines
🔗 Ссылка без VPN
#coroutines
Forwarded from Kotlin Multiplatform Broadcast
Сравнение (EN,15м) выполнения операций в Android через Executor, RxJava, Coroutines и Flow. В тесте провели замер скорост через Jetpack Microbenchmark 3 операций:
Результат:Разные технологии не влияют для многопоточных IO операций. Выбор фреймворка лучше основывать на вашем удобстве. Простые задачи, как арифметика, лучше выполнять без многозадачности.
Как считаете вы?
#производительность #coroutines #rxjava
Результат:
Как считаете вы?
#производительность #coroutines #rxjava
Forwarded from Kotlin Multiplatform Broadcast
Довольно большой и подробный рассказ про остановку Coroutine в Kotlin. Рекомендую всем почитать, чтобы лучше понимать как отменить корутину и как это работает с CoroutineScope
#coroutines
#coroutines
Forwarded from Kotlin Multiplatform Broadcast
Интересная статья (36м) с разбором как под капотом работают Kotlin Coroutine, что позволит вам развеять магию вокруг работы. Много полезного можете найти в канале автора @android_under_the_hood
#coroutines
#coroutines
Forwarded from Kotlin Multiplatform Broadcast
Advanced Kotlin Coroutine Cheat sheet (EN, 8М) - статья для Android разработчиков по основным понятиям Kotlin Coroutines
#coroutines #android
#coroutines #android
Есть полезная Jetpack библиотека lifecycle-process, которая предоставляет Lifecycle, связанные с процессом вашего приложения (Application класс).
В статье(EN,7м) рассказывается как делают её интеграцию с корутинами и применяют в проекте
#jetpack #coroutines #lifecycle
В статье(EN,7м) рассказывается как делают её интеграцию с корутинами и применяют в проекте
#jetpack #coroutines #lifecycle
Forwarded from Kotlin Multiplatform Broadcast
Большая статья "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
Forwarded from Kotlin Multiplatform Broadcast
Вышла библиотека 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
Forwarded from Kotlin Multiplatform Broadcast
Разбор(4м) способов синхронизации доступа к переменной на примере инкремента int из разных корутин
#coroutines
#coroutines
🚀 Ускорение загрузки Koin при запуске Android приложения (EN,8м)
В Koin 4 добавили интеграцию с Jetpack Startup для запуска инициализации Koin
и доступна инициализация фича модулей
Также показывается отложення загрузка модулей с помощью корутин
Подробнее про ленивые модули и фоновую загрузку в документации
#android #koin #di #jetpack #производительность #coroutines #AndroidBroadcast #БазаЗнаний
В Koin 4 добавили интеграцию с Jetpack Startup для запуска инициализации Koin
class MainApplication : Application(), KoinStartup {
override fun onKoinStartup(): KoinAppDeclaration = {
androidContext(this@MainApplication)
allowOverride(false)
modules(AppModule().module)
defaultModule()
}
}
и доступна инициализация фича модулей
// Initializer из Jetpack Startup
class FirstModuleInitializer : Initializer<Unit> {
override fun create(context: Context) {
loadKoinModules(firstModule)
}
override fun dependencies() =
mutableListOf(KoinInitializer::class.java)
}
Также показывается отложення загрузка модулей с помощью корутин
val m1 = lazyModule {
singleOf(::ClassA) { bind<IClassA>() }
}
startKoin {
// загрузка модулей в фоне с помощью Kotlin Coroutines
lazyModules(m1)
}
val koin = KoinPlatform.getKoin()
// Ожидания выполнения задач загрузки модулей
koin.waitAllStartJobs()
// или ставим в очередь лямбду на выполнение после
koin.runOnKoinStarted { koin ->
// Код выполнится после загрузки lazy modules
}
Подробнее про ленивые модули и фоновую загрузку в документации
#android #koin #di #jetpack #производительность #coroutines #AndroidBroadcast #БазаЗнаний
Forwarded from Kotlin Multiplatform Broadcast
Подробная статья о том, что происходит при вызове функции cancel() - отмене корутине, а именно рассказывается про:
👉 Классы Job и JobSupport
👉 Состояния Job
👉 Как работает отмена в Structured Concurrency
👉 Коммуникация между родительской и дочерней Job
👉 Как отменяется функция delay()
👉 Как отменяются suspend функции
#kotlin #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье описывается, что выбрать
StateFlow
, SharedFlow
или Channel
для работы с событиями в ViewModel
#android #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
Однажды пятничным вечером Александр и его коллега задумались над вопросом: где живут корутины, когда запустивший их coroutineScope героически погибает в жерновах GC? Субботнее утро было проведено за чтением статей и исходников.
Вот так и родилась идея доклада. В нем — ответы на вопросы об устройстве и работе корутин для самых любознательных.
#kotlin #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM