前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RxJava奇淫技巧-实现倒计时的功能

RxJava奇淫技巧-实现倒计时的功能

作者头像
Petterp
发布2022-02-09 12:42:10
8780
发布2022-02-09 12:42:10
举报
文章被收录于专栏:JetPack
代码语言:javascript
复制
 /**
     * 开启倒计时。传入间隔时间,次数
     * @param time 
     * @param sum
     */
    private void startTimer(long time, int sum) {
        Observable.interval(time, TimeUnit.MILLISECONDS)
                .take(sum)
                .map(aLong -> String.valueOf(sum - aLong))
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<String>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        disposable = d;
                    }

                    @Override
                    public void onNext(String s) {
                        //我们一般会选择将相应的时间直接设置到tv上,所以这里使用map转型
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {
                        openClick();
                        setTvCode("获取验证码");
                    }
                });      
     
      
       //最后不要忘记临时中断或者使用结束时取消订阅
	 public void onDestroy() {
        if (disposable != null && !disposable.isDisposed()) {
            Log.e("demo", "关闭");
            disposable.dispose();
            disposable = null;
        }
    }

其实上面的写法我们还可以更进一步简略:

代码语言:javascript
复制
 //简略写法,是不是特别简单
private void startTimer(long time,int count) {
        disposable = Observable.timer(time, TimeUnit.MILLISECONDS)
                .take(count+1)
                .map(aLong -> String.valueOf(count - aLong))
                .observeOn(AndroidSchedulers.mainThread())
                .doOnNext(this::setTvCode)
                .doOnComplete(this::openClick).subscribe();
}

接下来我们看看效果:

更多Rx实用技巧及全面解析我会在以后的学习中慢慢记录,有更好的使用建议也欢迎随时评论。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档