2016-02-17 140 views
2

我想對一個事件做出反應,如果它在一定的時間窗口內且只有一次。眼下,代碼如下:RxJava到期訂閱

mServiceRestartEmitter.take(1).subscribe(action); 

但是,我想要的動作不僅退訂後,該事件被消耗掉1個,而且如果事件沒有下再說300毫秒之內發生的事情。 如何實現這一目標?

回答

1

就意識到take()運營商也允許時間限制:

mServiceRestartEmitter.take(500, TimeUnit.MILLISECONDS).take(1).subscribeOn(Schedulers.io()).subscribe(action); 

應該做的伎倆。