TGViewer
Android Broadcast Android Broadcast @android_broadcast · 14.5K subscribers
Post #9098 6.79K
🤖 Как правильно конвертировать Flow в StateFlow

Для конвертации холодного Flow в горячий StateFlow для работы с состоянием (обычно происходит в ViewModel) стоит использовать оператор Flow<T>.stateIn(), с заданием политики запуска SharingStarted.WhileSubscribed
flow..stateIn(
scope = viewModelScope,
initialValue, // задаём начальное значение
started = SharingStarted.WhileSubscribed(
stopTimeoutMillis = 5.seconds,
replayExpirationMillis = 5.seconds,
),
)


SharingStarted.WhileSubscribed() — умный способ включать сбор данных только когда есть подписчики, и автоматически останавливать его, когда они исчезают. Важно настроить несколько значений:

👉 Параметр stopTimeoutMillis - задаем какое время пройдет после того как пропадет последний подписчик чтобы остановить StateFlow. По умолчанию стоит 0 мс, но Google рекомендует выставлять 5 секунд. Это позволит не останавливать Flow при пересоздании UI при смене конфигурации или если пользователь быстро свернул/развернул приложений.

👉 Параметр replayExpirationMillis - указывает через какое время после остановки сбросить кэш значений StateFlow и начать с начала, а именно initialValue

#kotlin #coroutines
  • ❤ 33
  • 👍 21
More from @android_broadcast
  1. Oct 7, 2026🏢 EmbeddingGemma 2: мультимодальный поиск прямо на телефоне Google выпустила EmbeddingGem…
  2. Oct 7, 2026Post #10231
  3. Oct 6, 2026🤖 В Android Bench добавили Claude Opus 5.5, GPT 6 Sol и GPT 6 Luna Google обновила лидерб…
  4. Oct 6, 2026Разыгрываю 2 билета на Podlodka AI Crew Условия - Подписаться на @rozov_blog - Подписаться…
  5. Oct 6, 2026Post #10227
  6. Oct 5, 2026🐱 Релиз Maven MCP 1.0. Агент сам смотрит актуальные версии зависимостей и что в них помен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →