1

我的 RxCompoundButton 有问题,只要我订阅它,它就会发出一个默认值,这不是我想要的。这种行为是预期的吗?

RxCompoundButton.checkedChanges(btOneWayFlag)
        .debounce(0, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
        .subscribe(notifyOneWayChecked);
4

1 回答 1

3

是的,您可以在文档中看到它:

注意:订阅时将立即发出一个值。

这是所有具有“状态”的视图的行为,这是有道理的,否则订阅时您将不会收到有关视图初始值的通知,但只会对第一次更改做出反应。
您还可以从返回的自定义类型中注意到这一点Observable- InitialValueObservable

如果您不希望这种行为可以使用skipInitialValue(),这是自定义的特殊运算符InitialValueObservable

RxCompoundButton.checkedChanges(btOneWayFlag)
       .skipInitialValue()
       .debounce(0, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
       .subscribe(notifyOneWayChecked);
于 2017-08-10T16:18:34.533 回答