
使用RxAndroid实现倒计时功能
private void timerCountDown() {
Observable<Integer> observable = countdown(5);
observable.doOnSubscribe(new Action0() {
@Override
public void call() {
Log.i(TAG, "开始计时");
}
}).subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
Log.i(TAG, "计时完成");
intentToLauncher();
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "计时出错: " + e.getMessage());
}
@Override
public void onNext(Integer integer) {
Log.i(TAG, "当前计时:" + integer);
timerText.setImageResource(secondsResId[integer - 1]);
}
});
}
public Observable<Integer> countdown(int time) {
if (time < 0) time = 0;
final int countTime = time;
return Observable.interval(0, 1, TimeUnit.SECONDS)
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<Long, Integer>() {
@Override
public Integer call(Long increaseTime) {
return countTime - increaseTime.intValue();
}
})
.take(countTime);
}




近期评论