Timer
个人理解:订阅后经过一定时间返回一个可观察对象
骚操作:
/**
* 延迟执行
* @param delayTime 延迟时间(单位秒)
* @return Observable<Long>
*/
public static Observable<Long> delayDo(int delayTime){
return Observable.timer(delayTime,TimeUnit.SECONDS,AndroidSchedulers.mainThread());
}
Interval
个人理解:自订阅开始返回一个自0开始无限递增的整数序列
骚操作:
/**
* 执行倒计时操作
* @param time 倒计时(单位秒)
* @return 剩下多少秒的Observable
*/
public static Observable<Integer> countDown(int time) {
if (time < 0) time = 0;
final int countTime = time;
//0延迟,间隔1秒
return Observable.interval(0, 1, TimeUnit.SECONDS)//按的时间间隔发射一个无限递增的整数序列。//0,1,2,3...
.take(countTime + 1)
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<Long, Integer>() {//变换
@Override
public Integer call(Long increaseTime) {
return countTime - increaseTime.intValue();
}
});
}