#AndroidBroadcast #Coroutines #Flow
📺 Миграция с LiveData на Coroutines Flow (25 мин)
Демонстрирую как в ваших ViewModel можно перейти с LiveData на StateFlow/SharedFlow. Видео практической направленности и в нём вы найдёте минимум теории. Как всегда, коротко и по делу!
💰Поддержать проект
📺 Миграция с LiveData на Coroutines Flow (25 мин)
Демонстрирую как в ваших ViewModel можно перейти с LiveData на StateFlow/SharedFlow. Видео практической направленности и в нём вы найдёте минимум теории. Как всегда, коротко и по делу!
💰Поддержать проект
#Coroutines #Flow
A safer way to collect flows from Android UIs
Совсем недавно я выпустил видео про миграцию с LiveData на Flow и вскользь упомянул проблем с тем что нет CoroutineScope, который соответствует поведению подписки в LiveData. Новое API
👉 LifecycleOwner.addRepeatingJob
👉 Lifecycle.repeatOnLifecycle
👉 Flow.flowWithLifecycle
Функции доступны в lifecycler-runtime-ktx 2.4.0-alpha01
A safer way to collect flows from Android UIs
Совсем недавно я выпустил видео про миграцию с LiveData на Flow и вскользь упомянул проблем с тем что нет CoroutineScope, который соответствует поведению подписки в LiveData. Новое API
👉 LifecycleOwner.addRepeatingJob
👉 Lifecycle.repeatOnLifecycle
👉 Flow.flowWithLifecycle
Функции доступны в lifecycler-runtime-ktx 2.4.0-alpha01
#Flow #Coroutines
Вышло официальное руководство "Kotlin flows on Android" в котором рассказывается что такое Flow, как его создать, модифицировать и получить данные.
Вышло официальное руководство "Kotlin flows on Android" в котором рассказывается что такое Flow, как его создать, модифицировать и получить данные.
Forwarded from Kotlin Multiplatform Broadcast
#Corouitnes #Flow
Things to know about Flow’s shareIn and stateIn operators
Разбор как операторы shareIn и stateIn как могут увеличить производительность в отдельных случаях, демонстрация разницы между ними и ошибки, которые пользователи могут допустить с ними
Things to know about Flow’s shareIn and stateIn operators
Разбор как операторы shareIn и stateIn как могут увеличить производительность в отдельных случаях, демонстрация разницы между ними и ошибки, которые пользователи могут допустить с ними
#LiveData #Flow
Migrating from LiveData to Kotlin’s Flow
Для всех кто пишет на Kotlin под Android Google рекомендует переходить с LiveData на Coroutines Flow. В статье разбираются реальные задачи с решением в LiveData и как они будут решаться с Flow.
Migrating from LiveData to Kotlin’s Flow
Для всех кто пишет на Kotlin под Android Google рекомендует переходить с LiveData на Coroutines Flow. В статье разбираются реальные задачи с решением в LiveData и как они будут решаться с Flow.
#livedata #flow #миграция
Миграция с LiveData на Kotlin’s Flow
В название все описано полностью - разбор как мигрировать с LiveData на Flow. Больше нечего добавить
Миграция с LiveData на Kotlin’s Flow
В название все описано полностью - разбор как мигрировать с LiveData на Flow. Больше нечего добавить
#viewmodel #livedata #flow
Kotlin’s Flow in ViewModels: it’s complicated
Разбор реактивных подходов в ViewModel: LiveData, Flow, StateFlow, сравнение и почему LiveData ещё может быть актуальна
Kotlin’s Flow in ViewModels: it’s complicated
Разбор реактивных подходов в ViewModel: LiveData, Flow, StateFlow, сравнение и почему LiveData ещё может быть актуальна
#coroutines #flow
Making cold Flows lifecycle-aware
Разбор какие особенности получения значение из Flow в Android вас могу поджидать и что новые repeatOnLifecycle и flowWIthLifecycle не всегда могут вам подойти
Making cold Flows lifecycle-aware
Разбор какие особенности получения значение из Flow в Android вас могу поджидать и что новые repeatOnLifecycle и flowWIthLifecycle не всегда могут вам подойти
#coroutines #flow
Kotlin Flow in Android summary (12 мин)
Обзор работы с Flow в Kotlin и Android частности. Большой талмуд! Ждём варианта на русском от автора
Kotlin Flow in Android summary (12 мин)
Обзор работы с Flow в Kotlin и Android частности. Большой талмуд! Ждём варианта на русском от автора
#coroutines #livedata #flow
Comparing Android LiveData and StateFlow (8 мин)
Сравнение LiveData и альтернативы его для потоков данных на основе Coroutines - StateFlow. Рассматриваются вопросы почему нельзя заменить и какие есть ограничения у StateFlow
Comparing Android LiveData and StateFlow (8 мин)
Сравнение LiveData и альтернативы его для потоков данных на основе Coroutines - StateFlow. Рассматриваются вопросы почему нельзя заменить и какие есть ограничения у StateFlow
💩29👍13🤩1
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
👍29👎5
Если внимательно посмотреть на поведение людей в поисковых полях, становится понятно:
пальцы работают быстрее, чем приложение успевает реагировать.
Пользователь печатает «a», тут же «an», следом «and» — а приложение в панике пытается перестроить результаты после каждого шага. Поток начинает «стрелять» событиями, система перегружается, а интерфейс выглядит так, будто его кто-то перематывает на ускоренной перемотке.
Главная проблема здесь не скорость человека — а то, что приложение воспринимает каждую мелочь как повод что-то пересчитать.
Чтобы интерфейс работал предсказуемо, нужно научить поток реагировать не на каждое изменение, а на осмысленное завершение ввода.
⏳ Зачем нужен debounce()
Оператор debounce() работает как фильтр слишком быстрых изменений:
- быстрые изменения подряд — игнорируются
- устойчивое значение после паузы — двигаются по потоку дальше
Поток перестаёт реагировать на каждую букву и начинает слушать устойчивые состояния строки.
val results = queryFlow
.debounce(300) // значение задержки можно менять
.distinctUntilChanged()
.map { term -> searchData(term) }
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())
------------
Помимо полезных символов, пользователь может случайно добавить пробел в конце или другой невидный символ. Фактически это тот же запрос — но без обработки поиск запустится повторно.
В таких случаях можно определиться как оператор distinctUntilChanged() будет сранивать значения:
queryFlow
.debounce(300)
.distinctUntilChanged { old, new ->
old.trim() == new.trim()
}
Теперь оба состояния считаются одинаковыми, и поиск не перезапускается зря.
#kotlin #coroutines #flow #android
Please open Telegram to view this post
VIEW IN TELEGRAM
8❤80👍54🤔3