tgoop.com/android_live/623
Last Update:
Новое API для Flow и UI-слоя
#flow #jetpack
Пару дней назад Google выпустили обновление для API Flow
, где заметно улучшили его взаимодействие с UI-слоем.
Если говорить о текущем состоянии, то, в целом, мы уже можем использовать Flow
и отказаться от LiveData
. Правда, есть одно замечание: может быть не безопасно подписываться в UI-слое на холодный Flow
, если мы вручную не можем отменить задачу, которая им выполняется. В качестве примера в статье приводится обновление локации пользователя и возможное текущее решение.
Теперь у нас есть три новых метода:
🔸 LifecycleOwner.addRepeatingJob — принимает Lifecycle.State
в качестве параметра и используется для автоматического создания и старта новой корутины и отменяет её, когда состояние достигнет противоположного значения.
🔸Lifecycle.repeatOnLifecycle — аналогичная функция, но только для Lifecycle
.
🔸Flow.flowWithLifecycle — этот API использует предыдущую функцию под капотом и также закрывает «продьюсера» в момент противоположного состояния жизненного цикла. Кроме этого, данную фукнцию можно встроить напрямую в целочку вызова Flow
, что делает вызов более лаконичным. Важно помнить, что эта функция работает по аналогии с Flow.flowOn
, которая затрагивает только цепочку, которая выше неё и добавляет буфер для предотвращения backpressure.
В целом, в статье упоминается то, что теперь можно полностью эмитировать поведение LiveData
и использовать Flow
в приложениях, где вы хотите использовать только Kotlin API. Это здорово, но пока API находится в alpha-версии и стоит тащить его к себе аккуратно.
Кроме этого, если вам это нужно, добавили поддержку data binding для Flow.
Детали тут.
BY Android Live 🤖

Share with your friend now:
tgoop.com/android_live/623