1

我在我的应用程序中使用流,但是我遇到了一些问题,它以不同的方式击中逻辑两次或没有它的 8/9 次。我正在使用 livedata 作为数据绑定流。

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}" />

代码

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

此调试语句使用 distinctUntilChanged() 调用两次或没有它调用 8-9 次。我不太确定为什么,但是这个流程正在与另一个流程相结合,并且它调用了我的其他逻辑方式。

4

1 回答 1

0

几天前我自己解决了这个问题。在我的代码中更深入地发现实时数据,我将组合流转换为实时数据几次,因为不同的事情导致了这个问题。通过使所有流程重新运行。

于 2020-02-27T14:58:12.340 回答