RxView.clicks(activityNewsButton)
.throttleLast(1000,TimeUnit.MICROSECONDS)
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
System.out.println("click");
}
});
经过调试,这样子还是会输出很多个click,好像并没有成功防抖动,为什么
还有compoundbutton也不能实现这个功能
RxCompoundButton.checkedChanges(schoolBusSwitchButton)
.throttleLast(1000, TimeUnit.MICROSECONDS)
.subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean aBoolean) {
System.out.println("switch");
}
});
스로틀퍼스트
시간 단위가 잘못되었습니다. 1000마이크로초 = 1밀리초 = 0.001초
으아악이번에는 흔들림 방지 효과가 전혀 없습니다
원래 의도는 1000밀리초여야 하는데, 즉 1초입니다
단위는 변환은 다음과 같습니다
추가로
throttleFirst()와 throttleLast()는 모두 흔들림 방지 효과를 얻을 수 있습니다
효과는 약간 다릅니다
throttleFirst()는 계속해서 클릭할 때 처음에만 사용되며 후속 클릭은 무시됨
throttleLast()는 계속 클릭할 때 마지막 클릭만 수행하고 이전 클릭은 무시합니다