我需要在收到事件后的X秒内执行一些操作(代表任何数据项rxJava)。但是,如果在X秒结束之前发生了另一个事件,则需要在X秒内再次执行计时器重置和操作。
换句话说,我们具有用户可以与之交互的UI元素。 X秒钟用户不使用此UI元素后,我们需要执行一些操作。简单的解决方案可能看起来像:
Disposable disp;
void init() {
final Flowable<Boolean> flowable =
mapDragOrZoomSubject.delay(TIME_X, TimeUnit.SECONDS)
.toFlowable(BackpressureStrategy.DROP);
disp = flowable. ...subscribeWith(ACTION); // <-- action in X seconds of inactivity
}
void gotNewUserInteraction() {
disp.dispose();
init();
}
如何在不基于某些rxJava运算符进行处理和重新创建Flowable的情况下执行此操作?
我对rxJava不太熟悉,但是您正在寻找的运算符可能是debounce。所以也许是这样的:
Disposable disp;
void init() {
final Flowable<Boolean> flowable =
mapDragOrZoomSubject.delay(TIME_X, TimeUnit.SECONDS)
.toFlowable(BackpressureStrategy.DROP);
disp = flowable
...
.debounce(TIME_X, TimeUnit.SECONDS)
.subscribeWith(ACTION); // <-- action in X seconds of inactivity
}
void gotNewUserInteraction() {
disp.dispose();
init();
}