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