本文基于:RaJava 2.1.14,另外本文不会对操作符的使用进行介绍,详情请参考RxJava 2.x Operators
参考:
轮播
根据需要改变本次延迟订阅时间
repeat
将会在每次请求回调Observer.onComplete()
或者Subscriber.onComplete()
之前就会重新订阅事件,而repeatWhen
可以根据自己的需求确定是否需要再次进行循环、延迟订阅、改变延迟订阅时间等。这就比较符合在我项目中的需求:第一次请求完成之后需要延迟一分钟再订阅,如果未打断请求的话将会改变这个订阅时间为两分钟。本来采用repeatWhen
+ delay
能够实现固定的轮播的效果,但却不能动态的改变轮播的间隔,于是改为repeatWhen
+ flatMap
+ timer
来实现: