RxJava2学习之十:发送验证码倒计时
CountDownTimer实现
Android提供一个CountdownTimer的类,采用Handler的方式实现,实现倒数计时的功能。
//第一个参数表示总时间,第二个参数表示间隔时间。单位ms,意思就是每隔100ms会回调一次方法onTick
new CountDownTimer(1000, 100) {
@Override
public void onTick(long l) {
Log.i(TAG, "onTick: " + l);
}
@Override
public void onFinish() {
Log.i(TAG, "onFinish: ");
}
}.start();
RxJava实现
RxJava操作符
本例涉及的RxJava操作符:
- Interval — 创建一个定时发射整数序列的Observable
RxJava实现
public void sendVerificationCode(View view) {
final Button button = (Button) this.findViewById(R.id.send_verification_code);
final long count = 10;
Observable.interval(0, 1, TimeUnit.SECONDS)
.take(count+1)
.map(new Function<Long, Long>() {
@Override
public Long apply(Long aLong) throws Exception {
return count - aLong;
}
})
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe(new Consumer<Disposable>() { //初始状态
@Override
public void accept(Disposable disposable) throws Exception {
button.setBackgroundColor(Color.parseColor("#A5A5A5"));
button.setEnabled(false);
}
})
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Long value) {
Log.i(TAG, "onNext: " + value);
button.setText("剩余 " + value + " 秒");
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete: ");
button.setEnabled(true);
button.setBackgroundColor(Color.parseColor("#3BC1FF"));
button.setText("发送验证码");
}
});
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/rxjava2-learning-10-countdown-to-sending-verification-codes/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
RxJava2学习之十:发送验证码倒计时
CountDownTimer实现
Android提供一个CountdownTimer的类,采用Handler的方式实现,实现倒数计时的功能。
//第一个参数表示总时间,第二个参数表示间隔时间。……
文章目录
关闭
共有 0 条评论