0

我正在尝试对 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
4

0 回答 0