我试图在Android中对滑块的输出进行采样。
设置如下: PublishSubject mSubjTrim。在滑块的OnTouchEvent中,我调用mSubjTrim.onNext(progress)
我从mSubjTrim
创建一个observablepublic 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