Observable.interval方法可以定时执行自定义的逻辑,常用方法如下:
/**
* 定时执行
*
* @param period 每次执行的间隔的时间
* @param unit 时间单位
* @return Observable对象
*/
public static Observable<Long> interval(long period, TimeUnit unit)
/**
* 定时执行
*
* @param initialDelay 第一次执行的延迟时间
* @param period 每次执行的间隔的时间
* @param unit 时间单位
* @return Observable对象
*/
public static Observable<Long> interval(long initialDelay, long period, TimeUnit unit)
举例如下:
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
private Disposable disposable;
/**
* 开始定时执行
*/
private void startTimer() {
stopTimer();
// 每隔500毫秒执行一次逻辑代码
disposable = Observable.interval(500, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(@io.reactivex.annotations.NonNull Long aLong) throws Exception {
// 逻辑代码
}
}, new Consumer<Throwable>() {
@Override
public void accept(@io.reactivex.annotations.NonNull Throwable throwable) throws Exception {
throwable.printStackTrace();
}
});
}
/**
* 停止定时执行
*/
protected void stopTimer() {
if (null != disposable) {
disposable.dispose();
disposable = null;
}
}