Android 在解盎司超时之前调用RxSeekBar onNext(非常不一致)

Android 在解盎司超时之前调用RxSeekBar onNext(非常不一致),android,rx-java2,rx-binding,Android,Rx Java2,Rx Binding,我正在开发AndroidTv,使用标准的seekBar进行播放 这就是我使用RxSeekBar的方式 RxSeekBar.changeEvents(seekBar) .debounce(SEEKBAR_DEBOUNCE_TIME, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<SeekB

我正在开发AndroidTv,使用标准的
seekBar
进行播放

这就是我使用RxSeekBar的方式

RxSeekBar.changeEvents(seekBar)
            .debounce(SEEKBAR_DEBOUNCE_TIME, TimeUnit.MILLISECONDS)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<SeekBarChangeEvent>() {
                @Override
                public void onSubscribe(Disposable disposable) {
                    compositeDisposable.add(disposable);
                }

                @Override
                public void onNext(SeekBarChangeEvent seekBarChangeEvent) {
                    if (seekBarChangeEvent instanceof SeekBarProgressChangeEvent) {
                        if (seekBar.hasFocus()) {
                            DebugLog.d(TAG, "(PROGRESS) SeekBarProgressChangeEvent");
                            seekBarSeekProgress = seekBarChangeEvent.getView().getProgress();
                            onSeek();
                        }
                    }
                }

                @Override
                public void onError(Throwable e) {
                    DebugLog.d(TAG, "RxSeek error - " + e.getMessage());
                }

                @Override
                public void onComplete() {

                }
            });
RxSeekBar.changeEvents(seekBar)
.debounce(SEEKBAR_debounce_TIME,TimeUnit.ms)
.observeOn(AndroidSchedulers.mainThread())
.订阅(新观察员){
@凌驾
订阅时的公共作废(一次性){
可合成。添加(一次性);
}
@凌驾
public void onNext(seekbarchanegevent seekbarchanegevent){
if(seekbarrangeevent实例seekbarprogresschangevent){
if(seekBar.hasFocus()){
DebugLog.d(标记“(进度)SeekBarProgressChangeEvent”);
seekBarSeekProgress=seekbarchanegevent.getView().getProgress();
onSeek();
}
}
}
@凌驾
公共无效申报人(可丢弃的e){
DebugLog.d(标记“RxSeek error-”+e.getMessage());
}
@凌驾
未完成的公共空间(){
}
});
基本上,我想在去盎司超时后更新东西。这可以正常工作
7/10次
,但有时会过早调用
onNext
,导致事情失控


我做错什么了吗

尝试在OnComplete中执行此操作OnComplete从不调用,只在每次解盎司超时时调用onNext。此外,我每1秒更新一次seekBar以播放音乐,你说的“过早”是什么意思?在解盎司周期到来之前,如果是这样,则表明RxJava解盎司存在问题,但可能性不大?可能的原因是您的解盎司不够长,因此有时它可以工作,而另一些则不行-它应该至少高于1秒的更新间隔时间,否则在手动更新搜索栏时,您将进入一个连续的事件循环。.尝试在onCompleteonComplete中执行操作从不调用OnComplete,只有onNext被称为every debounce TimeOut。此外,我每1秒更新一次seekBar,用于音乐播放。在debounce周期达到之前,您所说的“过早”是什么意思?如果是这样的话,则表明RxJava debounce存在问题,但可能性不大?可能的原因是您的去抖动时间不够长,因此,有时它可以工作,而另一些则不能工作-它至少应高于1秒的更新间隔时间,否则,当您手动更新搜索栏时,您将进入一个连续的事件循环。。