Hello! Использую Jetpack compose, VM -> Activity -> compose UI У меня

есть несколько StateFlow<Boolean> в VM, хранящие настройки приложения. В Activity подписываюсь на обновления через
lifecycle.repeatOnLifecycle
Проблема в том, что когда на экране с настройками жму на checkbox, меняющий значение второго StateFlow (в примере это boolean2), метод collect не срабатывает. Если поменять местами
VM.boolean1.collect
и
VM.boolean2.collect
, то не будет срабатывать collect у boolean1. Что я делаю не так? На LiveData все работает прекрасно.
Если обобщить, то сколько бы я не подписывался на обновления в StateFlow, вызываться будет только первый collect.
https://pastebin.com/Rxd8X8JY

7 ответов

16 просмотров

почему в одной корутине запускается сборка?

Alexander- Автор вопроса
Silent829
почему в одной корутине запускается сборка?

откровенно говоря, не видел в этом каких-либо проблем. У меня все было на LiveData, увидел статью, где советуют переходить на flow, перевел все так, как было, добавив lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {} } Подумал, это же куча boilerplate будет, если на каждый параметр запускать корутину 🤷‍♂️ т.е. мне на каждый параметр нужно запускать корутину и будет что-то вроде этого

Alexander
screenshot откровенно говоря, не видел в этом каких-либо проб...

да, на каждую сборку флоу нужно отдельную корутину запускать

Стейт флоу не эмитит повторно ведь тот же элемент, в отличии от Лайв даты Мб в этом у тебя проблема

Alexander- Автор вопроса
Sadyk Nasrullaev
Стейт флоу не эмитит повторно ведь тот же элемент,...

я это проверял, у меня повторных значений нет. Ребята выше правильно сказали, что для моего варианта нужно использовать отдельную корутину на каждый параметр. Согласился с тем, что лучше в один стейт все сделать

Похожие вопросы

Обсуждают сегодня

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
Ну, так - шо, грамодяне-эрленгяне? Все - готовы подписаться под словами "гуру" на счёт трудности применения POSIX threads и про, конкретно, мьютексы, что "... недопоставишь м...
Wlad
21
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
привет, как сбилдить свифт прогу статически? делаю -Xswiftc -static-executable - получаю такую ошибку: /lib/aarch64-linux-gnu/libc.a(pthread_join_common.o)(.note.stapsdt+0x14...
🦊 Fox 🌸 🌸
6
Карта сайта