Size: a a a

Kotlin Community

2020 July 14

IS

Ivan Sablin in Kotlin Community
Alexander Nozik
Посмотрите, что в pom файле
Посмотрел, ничего про семплы там нет. Смотрел в packageName/version/.pom
источник

AN

Alexander Nozik in Kotlin Community
Ivan Sablin
Посмотрел, ничего про семплы там нет. Смотрел в packageName/version/.pom
Ну в общем или в зависимостях pom что-то есть или у вас подтягиваются две разные версии из разных мест.
источник

IS

Ivan Sablin in Kotlin Community
Ошибка Failed to resolve: kmp-clean-mvvm-arch-1.2.5-samplessources
источник

AN

Alexander Nozik in Kotlin Community
Ivan Sablin
Ошибка Failed to resolve: kmp-clean-mvvm-arch-1.2.5-samplessources
Проверьте, что у вас в локале нет другой версии
источник

IS

Ivan Sablin in Kotlin Community
Alexander Nozik
Проверьте, что у вас в локале нет другой версии
это имеется ввиду?
источник

AN

Alexander Nozik in Kotlin Community
Я имею в виду, что если у вас в настройках градля есть mavenLocal и там лежит та же версия, он может перехватывать оттуда
источник

IS

Ivan Sablin in Kotlin Community
А окей
источник

IS

Ivan Sablin in Kotlin Community
Alexander Nozik
Я имею в виду, что если у вас в настройках градля есть mavenLocal и там лежит та же версия, он может перехватывать оттуда
посмотрел, локально не подключена библа эта
источник

AN

Alexander Nozik in Kotlin Community
Ivan Sablin
это имеется ввиду?
можно прям вот тут развернуть вкладку и посмотреть версии файлов
источник

IS

Ivan Sablin in Kotlin Community
указана же вроде и так, не? или каких файлов имеется вввиду?
источник

AN

Alexander Nozik in Kotlin Community
Ivan Sablin
указана же вроде и так, не? или каких файлов имеется вввиду?
Там можно посотреть прям код файлов подключенных
источник

IS

Ivan Sablin in Kotlin Community
ну да, но там вот эти ios либы, там ничего нет по сути. Ты имеешь ввиду, что бывает подключаешь новую библу, а все равно используется старая версия?
источник

IS

Ivan Sablin in Kotlin Community
тут еще дело в том, что это первая версия на бинтрей залитая, до этого только локально подключал
источник

КР

Кирилл Романенко... in Kotlin Community
Подскажите, пожалуйста, как лучше обойти проблему.
Здесь отчасти замешан андроид, но вопрос именно про флоу.

inline fun <T> Flow<T>.collectLifecycle(lifecycleOwner: LifecycleOwner, crossinline block: (T) -> Unit) {
   lifecycleOwner.lifecycleScope.launchWhenStarted {
       collect { block.invoke(it) }
   }
}

Коллектинг флоу суспендится, если будет onStop, и когда пользователь вернётся - коллектинг зарезьюмится. Проблема в том, что если в этом промежутке было много новых ивентов, то они вывалятся пачкой, а мне надо взять только последнее. Добавление conflate() не помогает, помогло debounce(10), но это не подходящее решение, надо без дебаунса. Есть идеи?
источник

I

Igor in Kotlin Community
Кирилл Романенко
Подскажите, пожалуйста, как лучше обойти проблему.
Здесь отчасти замешан андроид, но вопрос именно про флоу.

inline fun <T> Flow<T>.collectLifecycle(lifecycleOwner: LifecycleOwner, crossinline block: (T) -> Unit) {
   lifecycleOwner.lifecycleScope.launchWhenStarted {
       collect { block.invoke(it) }
   }
}

Коллектинг флоу суспендится, если будет onStop, и когда пользователь вернётся - коллектинг зарезьюмится. Проблема в том, что если в этом промежутке было много новых ивентов, то они вывалятся пачкой, а мне надо взять только последнее. Добавление conflate() не помогает, помогло debounce(10), но это не подходящее решение, надо без дебаунса. Есть идеи?
А какой у этого flow источник?
источник

КР

Кирилл Романенко... in Kotlin Community
Igor
А какой у этого flow источник?
StateFlow, который потом маппится на обычный флоу. В этот стейт флоу может быть в этом промежутке записано достаточно много ивентов, надо взять последнее.
источник

I

Igor in Kotlin Community
И почему кстати onEach, а не collect?
источник

КР

Кирилл Романенко... in Kotlin Community
Igor
И почему кстати onEach, а не collect?
Да без разницы
источник

EP

Eugene P. in Kotlin Community
Какой каноничный способ организовать очередь для доступа/редактирования данных в многопоточной среде чтобы исключить параллельный доступ к данным? Один из вариантов это использовать Mutex для блокировки, Но в документации нашел пример на акторах. Есть ли способ шарить актор между разными методами? Пример, как тут правильно реализовать функцию sendMessage
источник

EP

Eugene P. in Kotlin Community
class UserDao {
   // in-memory cache of the user object
   var user: User = User("", "")
       private set

   suspend fun getUser(): User {
       val response = CompletableDeferred<User>()
       sendMessage(UserMsg.GetUser(response))
       return response.await()
   }

   suspend fun setUser(user: User) {
       sendMessage(UserMsg.SetUser(user))
   }

   private suspend fun sendMessage(msg: UserMsg) {
       when (msg) {
           is UserMsg.SetUser -> user = msg.user
           is UserMsg.GetUser -> msg.response.complete(user)
       }
   }

   sealed class UserMsg {
       class SetUser(val user: User) : UserMsg() // one-way message to set user
       class GetUser(val response: CompletableDeferred<User>) : UserMsg() // a request with reply
   }
}
источник