Android应用开发中经常用到倒计时的功能由好多种方式去实现如CountDownTimer,Handler&Timer&TimerTask或是原生控件Chronometer等,但是RxJava给了我们更好的选择。
RxJava1.x版本的实现是利用interval()与take()操作符结合实现的直接上代码:
public static Observable<Integer> countdown(int time) {
if (time < 0) time = 0;
final int count = time;
return Observable.interval(0, 1, TimeUnit.SECONDS, Schedulers.io())
.map(aLong -> count - aLong.intValue())
.take(count + 1);
}
使用方式:
xxx.countdown(count)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(value -> textView.setText(value.toString()));
相比CountDownTimer,Handler&Timer&TimerTask,很干净的代码了
重磅来了
昨天在RxJava的Github上阅读documentation/operators/range的时候发