Observable.timer方法可以延时执行自定义的逻辑,常用方法如下:
/**
* 延时执行
*
* @param delay 延时执行的时间
* @param unit 时间单位
* @return Observable对象
*/
public static Observable<Long> timer(long delay, TimeUnit unit)
/**
* 延时执行
*
* @param delay 延时执行的时间
* @param unit 时间单位
* @param scheduler 调度器
* @return Observable对象
*/
public static Observable<Long> timer(long delay, TimeUnit unit, Scheduler scheduler)
举例如下:
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;
/**
* 开始延时执行doAction方法
*/
private void startTimer() {
// 延时500毫秒执行逻辑代码
disposable = Observable.timer(500, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(a -> doAction());
}
private void doAction() {
// 逻辑代码
}
注:Observable.timer与Observable.interval方法的相同点是:都具有延时执行的作用。但是区别也很明显,Observable.timer是延时处理一次逻辑代码,而Observable.interval主要用于循环处理多次逻辑代码,直到主动停止。