2017-08-10 48 views
1

我遇到了RxCompoundButton的問題,只要我訂閱它,它就會發出一個默認值,而這不是我想要的。預期這種行爲?RxCompoundButton發出默認值

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

回答

2

是的,你可以看到它在文檔:

注:值將立即訂閱發出。

這是所有具有'狀態'的視圖的行爲,這是有道理的,否則當訂閱時你不會通知視圖的初始值,而只會對第一次更改做出反應。
您也可以從返回的Observable - InitialValueObservable的自定義類型中注意到這一點。

如果不希望這種行爲,你可以使用skipInitialValue(),這是在自定義InitialValueObservable一個特殊的運算符:

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