我对RxCompoundButton有一个问题,只要我订阅它,它就会发出一个默认值,而这不是我想要的。这种行为有望吗?
RxCompoundButton.checkedChanges(btOneWayFlag)
.debounce(0, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.subscribe(notifyOneWayChecked);
答案 0 :(得分:3)
是的,你可以在docs中看到它:
注意:订阅时会立即发出一个值。
这是具有' state'的所有视图的行为,这是有意义的,否则您将不会在订阅时获得有关视图初始值的通知,但仅对第一次更改做出反应。
您还可以从返回的Observable
- InitialValueObservable
的自定义类型中注意到这一点。
如果您不想要此行为,可以使用skipInitialValue()
,这是自定义InitialValueObservable
的特殊操作员:
RxCompoundButton.checkedChanges(btOneWayFlag)
.skipInitialValue()
.debounce(0, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.subscribe(notifyOneWayChecked);