被采样的可观察物充满了事件

时间:2016-09-09 21:44:44

标签: android rx-java debouncing

我试图在Android中对滑块的输出进行采样。

设置如下: PublishSubject mSubjTrim。在滑块的OnTouchEvent中,我调用mSubjTrim.onNext(progress)

我从mSubjTrim

创建一个observable
public final Observable<Integer> mObsTrim = mSubTrim.sample(1, TimeUnit.SECONDS)

(它设置为秒,因为它更容易看到以秒为单位记录输出。在实际使用中,这将是大约50毫秒的样本)

我订阅mObsTrim就像这样:

RxBus.Instance().mObsTrim.subscribe(trim -> {
            Logy.CallPrint(LOGY_ENABLE, CLASSNAME, "Trim Change");
            DispatchTrimChange(trim);
        });

调整滑块时的输出会产生以下输出

ParameterSender*::Trim Change @1473456738766 // @timeOfEvent via System.currentTimeMillis()
ParameterSender*::Trim Change @1473456745764
ParameterSender*::Trim Change @1473456745765
ParameterSender*::Trim Change @1473456745765
ParameterSender*::Trim Change @1473456745766
ParameterSender*::Trim Change @1473456745766
ParameterSender*::Trim Change @1473456745766
ParameterSender*::Trim Change @1473456745767

由于样本被描述起作用,因此很难发挥作用。

我也试试

public final Observable<Integer> mObsTrim = mSubTrim.sample(1, TimeUnit.SECONDS).debounce(5, TimeUnit.MILLISECONDS);

输出也没有什么不同!

为什么我不能每秒获得一次修剪的单一更新?

修改

所以我向监听器添加了一条日志消息,因此我知道最后一次输入是在

进行的
MyActivity::SetTrim @1473458620018 // This is a single input event with nothing before it
ParameterSender*::Trim Change = -25.2 @1473458620287
ParameterSender*::Trim Change = -25.2 @1473458620288
ParameterSender*::Trim Change = -25.2 @1473458620288
ParameterSender*::Trim Change = -25.2 @1473458620289
ParameterSender*::Trim Change = -25.2 @1473458620289
ParameterSender*::Trim Change = -25.2 @1473458620289
ParameterSender*::Trim Change = -25.2 @1473458620290

0 个答案:

没有答案