Мне нужно выполнить какое-то действие через X секунд после получения события (представлен любой элемент данных rx Java). Но если получено другое событие до истечения X секунд, сброс таймера и действие должны быть выполнены снова через X секунд.
Другими словами, у нас есть элементы пользовательского интерфейса, с которыми пользователь может взаимодействовать. После X секунд бездействия пользователя с этим элементом пользовательского интерфейса нам нужно выполнить какое-то действие. Тривиальное решение может выглядеть следующим образом:
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();
}
Как это сделать без удаления и повторного создания Flowable на основе некоторых операторов rx Java?