android: kotlin поток нескольких событий - PullRequest
0 голосов
/ 21 февраля 2020

Я использую поток в своем приложении, но у меня есть некоторые проблемы с ним, попадающим в логи c дважды с отчетливым или 8/9 раз без него. Я использую Livingata как поток с привязкой данных.

xml

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/amount_edit"
                isFocused="@={viewModel.amountFocused}"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="numberSigned"
                android:maxLines="1"
                android:text="@={viewModel.amount}" />

code

private val amountFlow = amount.asFlow().mapLatest {
    Timber.d("FLOW : amountFlow ${it}")
    if (it != null && it.length >= MIN_QUERY_LENGTH) {
        it.toIntOrNull()
    } else {
        null
    }
}.distinctUntilChanged()

этот оператор отладки вызывается дважды с использованием diverUntilChanged () или 8-9 раз без него. Я не совсем уверен, почему, но этот поток объединяется с другим потоком, и он называет мою другую логику способом для многих.

1 Ответ

0 голосов
/ 27 февраля 2020

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

...