我的 RxCompoundButton 有问题,只要我订阅它,它就会发出一个默认值,这不是我想要的。这种行为是预期的吗?
RxCompoundButton.checkedChanges(btOneWayFlag)
.debounce(0, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.subscribe(notifyOneWayChecked);
我的 RxCompoundButton 有问题,只要我订阅它,它就会发出一个默认值,这不是我想要的。这种行为是预期的吗?
RxCompoundButton.checkedChanges(btOneWayFlag)
.debounce(0, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.subscribe(notifyOneWayChecked);
是的,您可以在文档中看到它:
注意:订阅时将立即发出一个值。
这是所有具有“状态”的视图的行为,这是有道理的,否则订阅时您将不会收到有关视图初始值的通知,但只会对第一次更改做出反应。
您还可以从返回的自定义类型中注意到这一点Observable
- InitialValueObservable
。
如果您不希望这种行为可以使用skipInitialValue()
,这是自定义的特殊运算符InitialValueObservable
:
RxCompoundButton.checkedChanges(btOneWayFlag)
.skipInitialValue()
.debounce(0, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.subscribe(notifyOneWayChecked);