先来看下效果图:
//首先导入rxjava包
compile 'io.reactivex:rxjava:1.1.6'
compile 'io.reactivex:rxandroid:1.2.1'
//代码
int count_time = 60; //总时间
Observable.interval(0, 1, TimeUnit.SECONDS) //0延迟 每隔1秒触发
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())//操作UI主要在UI线程
.take(count_time + 1) //设置循环次数
.map(aLong -> count_time - aLong) //从60-1
.doOnSubscribe(() -> idTvCodeAcRegister.setClickable(false)) //执行过程中按键为不可点击状态
.subscribe(new Observer<Long>() {
@Override
public void onCompleted() {//循环结束调用此方法
LogUtil.show("onCompleted");
idTvCodeAcRegister.setClickable(true);
idTvCodeAcRegister.setText(R.string.get_code);
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(Long aLong) {//每隔一秒执行
LogUtil.show("onNext: " + aLong);
idTvCodeAcRegister.setText("重获(" + aLong + ")");
}
});
633600411(Android技术交流群)
//注意:代码中:->格式为lambda表达式,有兴趣学习更多相关知识请加下方qq群
633600411(Android技术交流群)