interval :返回一个流,每个指定的时间间隔都发射一个序号。
可以使用在例如股票k线图、实时数据等应用环境
首先来看一下原方法:
public static Flowable<Long> interval(long period, TimeUnit unit) {
return interval(period, period, unit, Schedulers.computation());
}
从上面的方法中我们看出,interval在Flowable.java 类中很多重载方法,我们可以根据不同的需求调用不同的方法即可,以下是对interval的常用方法:
一、定时调用
//定时2秒调用一次
Flowable.interval(2, TimeUnit.SECONDS).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(@NonNull Long aLong) throws Exception {
Log.e("------>",(aLong++)+"");
}
});
输出日志:
09-22 03:13:36.785 4434-4434/jy.com.rxjava2 E/------>: 0
09-22 03:13:38.785 4434-4434/jy.com.rxjava2 E/------>: 1
09-22 03:13:40.785 4434-4434/jy.com.rxjava2 E/------>: 2
09-22 03:13:42.785 4434-4434/jy.com.rxjava2 E/------>: 3
09-22 03:13:44.785 4434-4434/jy.com.rxjava2 E/------>: 4
09-22 03:13:46.785 4434-4434/jy.com.rxjava2 E/------>: 5
09-22 03:13:48.785 4434-4434/jy.com.rxjava2 E/------>: 6
二、带有延迟 的定时任务;如下,先 延迟 10秒 ,在执行2s定时任务
public static void interval2(final TextView textView) {
Log.e("======>", "start");
Flowable.interval(10, 2, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(@NonNull Long aLong) throws Exception {
Log.e("======>",(aLong++)+"");
}
});
}
输出日志:
09-22 05:00:32.965 11640-11640/jy.com.rxjava2 E/======>: start
09-22 05:00:43.015 11640-11640/jy.com.rxjava2 E/======>: 0
09-22 05:00:45.015 11640-11640/jy.com.rxjava2 E/======>: 1
09-22 05:00:47.015 11640-11640/jy.com.rxjava2 E/======>: 2
09-22 05:00:49.015 11640-11640/jy.com.rxjava2 E/======>: 3
09-22 05:00:51.015 11640-11640/jy.com.rxjava2 E/======>: 4
09-22 05:00:53.015 11640-11640/jy.com.rxjava2 E/======>: 5
09-22 05:00:55.015 11640-11640/jy.com.rxjava2 E/======>: 6