RxCompoundButton发出默认值

时间:2017-08-10 14:59:14

标签: rx-java rx-binding

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

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

1 个答案:

答案 0 :(得分:3)

是的,你可以在docs中看到它:

  

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

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

如果您不想要此行为,可以使用skipInitialValue(),这是自定义InitialValueObservable的特殊操作员:

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