Описание тега kotlin-flow

В сопрограммах Kotlin поток — это поток асинхронно вычисляемых значений. Используйте этот тег, если у вас возникли проблемы с созданием, преобразованием или потреблением потоков.
1 ответ

Как внедрить viewModelScope для модульного теста Android с сопрограммами Kotlin?

Вопросы Какая стратегия лучше всего вводить viewModelScope для модульных тестов Android с сопрограммами Kotlin? Когда CoroutineScope вводится в ViewModel для модульных тестов, должен ли CoroutineDispatcher также быть введен и определен с использован…
1 ответ

В чем разница между потоком и channelFlow?

У меня есть оба кода ниже, и результат для меня выглядит одинаково val namesFlow = flow { println("Start flow") (0..10).forEach { // Emit items with 500 milliseconds delay delay(500) println("Emitting $it") emit(it) } }.map { it …
12 авг '20 в 16:29
0 ответов

Kotlin Flow: недостаточно информации для вывода переменной типа внутри функции построителя Flow

У меня есть такая функция расширения: inline operator fun <reified T : Any> SharedPreferences.get(key: String, defaultValue: T? = null): T? { return when (T::class) { String::class -> getString(key, defaultValue as? String ?: "") as T Int::…
2 ответа

Преобразование InputStream в Flow

Я хотел бы прочитать содержимое файла и создать поток для каждой строки его содержимого. Итак, мне нужно реализовать функцию со следующей подписью: fun InputStream.linesToFlow(): Flow<String> Есть ли способ реализовать эту функцию?
3 ответа

Как возобновить поток после исключения

У меня такой код: val channel = BroadcastChannel<Event>(10) fun setup() { scope.launch { channel.asFlow(). .flatMapLatest { fetchSomeData() } .catch { emit(DefaultData()) } .onEach { handleData() } .collect() } } fun load() { channel.offer(Eve…
03 фев '20 в 15:29
4 ответа

Как я могу отклонить setOnClickListener на 1 секунду с помощью Kotlin Coroutines?

Когда пользователь быстро нажимает на кнопку, метод showDialog() отображается несколько раз друг над другом, поэтому, когда вы закрываете его, за ним появляется еще один. Я ищу способ игнорировать второе нажатие в течение 1 секунды без использования…
1 ответ

Как связать Coroutine Flow?

Я мог бы легко связать coroutine Flows, выполнив: val someFlow = flow { //Some logic that my succeed or throw error } val anotherFlow = flow { // Another logic that my succeed or throe error } val resultingFlow = someFlow.flatmapLatest(anotherFlow) …
02 мар '20 в 12:16
1 ответ

Room with Flow возвращает значение null, когда оно пусто

Я только начал смотреть на Room, Coroutines и Flow и наткнулся на кое-что странное: то, что я ожидаю, будет пустым потоком, на самом деле имеет один нулевой элемент. Моя настройка выглядит следующим образом: с общим T для моих настоящих сущностей. i…
3 ответа

Kotlin Flows обратный вызов взаимодействия с Java

Я искал подходящее решение или передовую практику, когда хочу использовать Kotlin Flows с обычными обратными вызовами. Мой вариант использования состоит в том, что я пишу библиотеку kotlin, которая использует Kotlin Flow внутри, и я должен предполож…
09 мар '20 в 19:57
2 ответа

Kotlin Flow сортировка

Есть ли способ отсортировать коллекцию, созданную потоком, в произвольном порядке, например: fun getList():Flow<Something> fun main(){ launch{ getList().filter{}.map{}.sortBy{ // }.toList() } }
1 ответ

Как сканировать рекурсивные структуры с помощью сопрограмм Kotlin?

Учитывая древовидную структуру и операцию для выборки дочерних узлов узла, например: typealias NodeReference = URL data class Node( val data:Data, val childrenList:List<NodeReference>) suspend fun resolve(nodeRef:NodeReference) : Node Вы знает…
0 ответов

Аналог RxJava .share() в сопрограммах

Я развлекаюсь suspend fun getData(): Data {...} чтобы получить данные из бэкэнда. Если это развлечение вызывается из разных мест, я хочу избежать многократного обращения к серверу, все последующие исполнения будут ждать результата первого выполнения…
1 ответ

Как выдавать значения из разных функций, но собирать их все в одном месте? Поток Котлин

В моей деятельности мне нужно выдавать разные значения потока для обратных вызовов, например: override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) emit(1) } override …
5 ответов

Как передать значение потока из другой функции? Котлинские сопрограммы

У меня есть поток: val myflow = kotlinx.coroutines.flow.flow<Message>{} и хотите испускать значения с помощью функции: override suspend fun sendMessage(chat: Chat, message: Message) { myflow.emit(message) } Но компилятор не позволяет мне этого…
07 май '20 в 13:07
1 ответ

Kotlin flow: собирать только элементы, которые повторяются как минимум N раз

Я использую функцию распознавания символов ML Kit, и иногда первые несколько значений неверны, и только через некоторое время камера стабилизируется и выдает правильные значения. Я не хочу отбрасывать первые значения X, потому что я не знаю, сколько…
2 ответа

Развлечение с потоками, получение null при преобразовании в живые данные

Я пробую потоки и пытаюсь понять, как их можно преобразовать в mvvm с моделями представления Android. Вот что я сначала попробовал проверить: class HomeViewModel : ViewModel() { private lateinit var glucoseFlow: LiveData<Int> var _glucoseFlow …
06 фев '20 в 01:46
1 ответ

Как использовать объединенный результат Kotlin Flows в модели просмотра из нескольких вариантов использования / взаимодействий?

Задний план Я пытаюсь реализовать шаблон чистой архитектуры в стиле MVVM с репозиториями и вариантами использования / взаимодействиями. Я хотел бы использовать Kotlin Flows для вариантов использования / взаимодействия. Все варианты использования име…
1 ответ

поток котлина не испускает значения из другой функции

Я пытаюсь реализовать поток состояний kotlin, но не могу понять причину, по которой он не работает. Токовый выход: verificatio 34567 Ожидаемый результат: проверка 34567 не удалось package stateflowDuplicate import kotlinx.coroutines.flow.collect imp…
0 ответов

Как преобразовать обработчик Android в поток в Kotlin

У меня есть обработчик, который я использую для связи со службой. Я бы хотел вызвать из него функции приостановки, но это, очевидно, невозможно. Я бы не хотел запускать сопрограмму внутри функции handleMessage, потому что я хотел бы сохранить послед…
17 июн '20 в 01:46
5 ответов

Библиотека Android Room с Kotlin Flow toList () не работает

Я сделал простой пример приложения с использованием Room и Flows: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val build = R…