Size: a a a

Kotlin Community

2020 June 30

EP

Eugene P. in Kotlin Community
Я планирую использовать StateFlow несколько шире, чем только как замену LiveData. Например, как замену ObservableEmitter в некоторых случаях.
источник

BP

Bogdan Panchenko in Kotlin Community
Eugene P.
@Test
   fun testStateFlow() {
       runBlocking {
           launch(GlobalScope.coroutineContext) {
               val state = MutableStateFlow<Int>(1)
               state
                       .onEach { log("First ${Thread.currentThread().name}") }
                       .flowOn(newSingleThreadContext("Thread1"))
                       .onEach { log("Second ${Thread.currentThread().name}") }
                       .flowOn(newSingleThreadContext("Thread2"))
                       .onEach { log("Third ${Thread.currentThread().name}") }
                       .launchIn(GlobalScope)
               log("Emit ${Thread.currentThread().name}")
               state.value = 1
               delay(100)
           }
       }
   }

   fun log(s: String) {
       System.out.println(s)
   }

Выводит
Emit main @coroutine#2
First Thread1 @coroutine#5
Second Thread2 @coroutine#4
Third DefaultDispatcher-worker-2 @coroutine#3

Т.е. flowOn не работает только непосредственно для StateFlow, после трансформаций уже работает
А теперь поработай с value
источник

EP

Eugene P. in Kotlin Community
@SchFuntik что вы имеете в виду?
источник

AM

Andrew Mikhaylov in Kotlin Community
Eugene P.
Спасибо, что не упускаете возможности плюнуть в мою сторону
Справедливости ради, launch(GlobalScope.coroutineContext) выглядит достаточно дико
источник

EP

Eugene P. in Kotlin Community
@r4zzz4k Ну я ж начинающий
источник

AM

Andrew Mikhaylov in Kotlin Community
А в случае с runBlocking { launch { ... } } лонч вообще не нужен, runBlocking сам тоже создаёт контекст
источник

AM

Andrew Mikhaylov in Kotlin Community
Eugene P.
@r4zzz4k Ну я ж начинающий
Я к тому, что не стоит обижаться на предложение почитать / перечитать статьи по теме, тем более корутины непростая штука.
источник

EP

Eugene P. in Kotlin Community
@r4zzz4k конструктивная критика всегда приветствуется
источник

EP

Eugene P. in Kotlin Community
но когда просто говорят RTFM...
источник

BP

Bogdan Panchenko in Kotlin Community
Eugene P.
@SchFuntik что вы имеете в виду?
State Flow имеет единственное отличие от Flow - это свойство value
источник

BP

Bogdan Panchenko in Kotlin Community
В этом его и смысл
источник

AM

Andrew Mikhaylov in Kotlin Community
Bogdan Panchenko
State Flow имеет единственное отличие от Flow - это свойство value
Ну не единственное. Он ещё и значения равные конфлейтит, к примеру.
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Ну не единственное. Он ещё и значения равные конфлейтит, к примеру.
Ну я строчки зрения объявления АПИ (интерфейса). А так разница не только в этом. Верная поправка
источник

EP

Eugene P. in Kotlin Community
Спасибо всем за помощь и объяснения. Кажется, самый волнующий момент со StateFlow для себя я выяснил.
источник

Y

Yanis in Kotlin Community
вроде как использовать GlobalScope в приличном обществе не принято, а как тогда я могу запустить некую корутину которая гарантированно выполнится не прибегая к GlobalScope ?
источник

АБ

Андрей Барковский... in Kotlin Community
Сервис или Work Manager
источник

BP

Bogdan Panchenko in Kotlin Community
Yanis
вроде как использовать GlobalScope в приличном обществе не принято, а как тогда я могу запустить некую корутину которая гарантированно выполнится не прибегая к GlobalScope ?
Создав свой скоуп.
источник

LS

Lev Shagalov in Kotlin Community
Вопрос к тем, кто под виндой разрабатывает: какой пакетный менеджер импользуете? chocolatey?
источник

a

azazellj in Kotlin Community
What's the result?
Анонимная викторина
53%
true, true, true, true
6%
true, false, true, false
35%
true, true, true, false
6%
true, false, true, true
Проголосовало: 17
источник

a

azazellj in Kotlin Community
источник