Coroutines. Хаотичное изучение. Часть 3

  Рет қаралды 2,555

red_mad_dev

red_mad_dev

Күн бұрын

Третья часть "хаотичного изучения" Kotlin Coroutines о том как безопасно слушать из UI. 🧔🏻
Зашли издалека:
Для чего был нужен SingleLiveEvent 📟
Как его приготовить без LiveData 🔫
Channel (кажется это спойлер 😆)
О трате ресурсов в бекграунде 🔦
buffer, conflate, flowOn, shareIn
WhileSubscribed
Как безопасно слушать Flow из UI ✅
И не тратить ресурсы 🛠
Lifecycle.repeatOnLifecycle
Flow.flowWithLifecycle
Ссылки:
developer.andr...
/ livedata-with-snackbar...
proandroiddev....
/ shared-flows-broadcast...
/ a-safer-way-to-collect...
kotlin.github....
kotlin.github....
kotlin.github....
kotlin.github....
kotlin.github....
developer.andr...
/ migrating-from-livedat...

Пікірлер: 4
@VINNY94051
@VINNY94051 3 жыл бұрын
Хорошие гайды, ждём новый части)
@sergeyo.1512
@sergeyo.1512 3 жыл бұрын
Все улучшения к сожалению выглядят как дикие костыли. Развели зоопарк flow, stateFlow, sharedFlow, chanel попытались ими что то решить,вышло так себе ,написали еще костылей. Все это работает с оговорками и задач своих не выполняет. Ощущение что концепция "поплыла". Что касается формата, может для более легкой темы он бы зашел, в этой кмк надо наоборот сильно все структурировать. Но в качестве просто обратить внимание на проблемы то вполне. За вынесенные ссылочки спасибо!
@indrih
@indrih 3 жыл бұрын
flowOn не создаёт буффер, он меняет контекст выполнения.
@red_mad_dev
@red_mad_dev 3 жыл бұрын
Там общение между начальным контекстом и тем на который переключились идёт через канал с дефолтным размером буфера. Соответственно, появляется буфер. Вот кусочек из доки: "if changing dispatcher is required, it collects flow emissions in one coroutine that is run using a specified context and emits them from another coroutines with the original collector's context using a channel with a default buffer size between two coroutines similarly to buffer operator, unless buffer operator is explicitly called before or after flowOn, which requests buffering behavior and specifies channel size."
Рекомпоузим живое приложение
57:50
red_mad_dev
Рет қаралды 1,8 М.
번쩍번쩍 거리는 입
0:32
승비니 Seungbini
Рет қаралды 182 МЛН
Generics in Swift. Шурик Бабаев, red_mad_robot spb
33:36
Transformers (how LLMs work) explained visually | DL5
27:14
3Blue1Brown
Рет қаралды 4,7 МЛН
But what is a neural network? | Deep learning chapter 1
18:40
3Blue1Brown
Рет қаралды 18 МЛН
FPS Eye Training Warmup (HIGH FPS)
8:30
ottr
Рет қаралды 2,6 МЛН