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