千家信息网

Android怎么使用RxBinding与RxJava2实现短信验证码倒计时功能

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇"Android怎么使用RxBinding与RxJava2实现短信验证码倒计时功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅
千家信息网最后更新 2025年01月23日Android怎么使用RxBinding与RxJava2实现短信验证码倒计时功能

这篇"Android怎么使用RxBinding与RxJava2实现短信验证码倒计时功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Android怎么使用RxBinding与RxJava2实现短信验证码倒计时功能"文章吧。

场景:注册账号页面时,我们点击按钮发送验证码,在等待验证码时,界面会有倒计时提示,这此期间按钮不可点击。当倒计时结束时,按钮恢复。

实现与功能都不难,这次用 RxBinding,RxJava2 的方法去实现。并实现了手动、自动停止倒计时,防止多次点击。

功能动态图

要使用 RxBinding、RxJava2 先添加 Gradle 配置:

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.0.1'compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'compile 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.0.0'compile 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.0.0'

首先通过 RxView.clicks() 绑定并转换成一个倒计时的 Observable 观察者对象。

Observable mObservableCountTime = RxView.clicks(mBtnSendMsm)  //防止重复点击  .throttleFirst(MAX_COUNT_TIME, TimeUnit.SECONDS)  //将点击事件转换成倒计时事件  .flatMap(new Function>() {    @Override    public ObservableSource apply(Object o) throws Exception {      //更新发送按钮的状态并初始化显现倒计时文字      RxView.enabled(mBtnSendMsm).accept(false);      RxTextView.text(mBtnSendMsm).accept("剩余 " + MAX_COUNT_TIME + " 秒");      //在实际操作中可以在此发送获取网络的请求      //返回 N 秒内的倒计时观察者对象。      return Observable.interval(1, TimeUnit.SECONDS, Schedulers.io()).take(MAX_COUNT_TIME);    }  })  //将递增数字替换成递减的倒计时数字  .map(new Function() {    @Override    public Long apply(Long aLong) throws Exception {      return MAX_COUNT_TIME - (aLong + 1);    }  })  .observeOn(AndroidSchedulers.mainThread());//切换到 Android 的主线程。

设置作为倒计时提示的 Consumer 被观察者对象。

Consumer mConsumerCountTime = new Consumer() {  @Override  public void accept(Long aLong) throws Exception {    //显示剩余时长。当倒计时为 0 时,还原 btn 按钮.    if (aLong == 0) {      RxView.enabled(mBtnSendMsm).accept(true);      RxTextView.text(mBtnSendMsm).accept("发送验证码");    } else {      RxTextView.text(mBtnSendMsm).accept("剩余 " + aLong + " 秒");    }  }};

订阅点击事件:

 //订阅点击事件 Disposable mDisposable = mObservableCountTime.subscribe(mConsumerCountTime);

停止倒计时,但依然可以再次点击。

//重置验证码按钮。RxView.clicks(mBtnClean).subscribe(new Consumer() {  @Override  public void accept(Object o) throws Exception {    if (mDisposable != null && !mDisposable.isDisposed()) {      //停止倒计时      mDisposable.dispose();      //重新订阅      mDisposable = mObservableCountTime.subscribe(mConsumerCountTime);      //按钮可点击      RxView.enabled(mBtnSendMsm).accept(true);      RxTextView.text(mBtnSendMsm).accept("发送验证码");    }  }});

退出当前页面时,销毁清空数据。

@Overrideprotected void onDestroy() {  super.onDestroy();  if (mDisposable != null) {    mDisposable.dispose();  }}

以上就是关于"Android怎么使用RxBinding与RxJava2实现短信验证码倒计时功能"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

倒计时 验证 按钮 功能 内容 事件 短信 对象 观察者 剩余 观察 订阅 数字 文章 知识 篇文章 页面 提示 价值 再次 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 圣安地列斯角色扮演服务器ip 数据库中怎样设置字段的长度 厦门网络安全培训免费试学 温医高等研究院服务器机房 怎样管理手机储存数据库 db2还原数据库语句 桂阳学电脑软件开发培训多少钱 服务器架构与管理 计算机网络技术全真模拟三 谷歌服务器关掉对手机有什么影响 沭阳个性化网络技术价格表格 信息化网络技术推广诚信服务 视频文件放到apache服务器 能在电脑上自学软件开发吗 生物实验室软件开发 网络安全小达人的一些好语句 服务器几点开饭 计算机网络技术院系 团中央网络安全直播 老款游戏软件开发的游戏 界首软件开发设计 费县网络安全保卫局 高考信息技术网络技术应用 办公室服务器管理方法 lm软件开发 孝义蓝思网络技术有限公司 公安网络安全宣传活动简报 方舟为什么进不了联机的服务器 网络技术运用题 浪潮管理服务器
0