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

简介: 代码如下
 /**
     * 开启倒计时。传入间隔时间,次数
     * @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;
        }
    }

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

 //简略写法,是不是特别简单
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实用技巧及全面解析我会在以后的学习中慢慢记录,有更好的使用建议也欢迎随时评论。

目录
相关文章
|
存储 开发工具 索引
游戏编程之十七 生成简单的动画
游戏编程之十七 生成简单的动画
52 0
|
6月前
|
API 开发者
通过使用Phaser游戏框架,我成功地完成了“跳跃之旅”项目的开发
【5月更文挑战第14天】在Phaser框架下开发2D平台跳跃游戏&quot;跳跃之旅&quot;时,面临性能优化、碰撞检测与响应、图形和动画等挑战。通过使用Phaser的性能分析工具和资源优化策略提升帧率,利用内置物理引擎实现精确碰撞,编写自定义碰撞响应函数,以及借助图形绘制和动画系统创建精美动画,成功解决了这些问题。此过程提升了开发者的技术水平和对游戏开发的理解。
62 4
|
小程序 JavaScript
小程序自学系列(零基础学小程序002)---小程序实现电商秒杀倒计时效果
小程序自学系列(零基础学小程序002)---小程序实现电商秒杀倒计时效果
103 0
|
小程序 JavaScript
小程序自学系列(零基础学小程序)---小程序实现简单的倒计时效果
小程序自学系列(零基础学小程序)---小程序实现简单的倒计时效果
java游戏开发杂谈 - 线程
java游戏开发杂谈 - 线程线程,让游戏拥有了动态变化的能力。 java的图形界面,在启动的时候,就开始了一个线程。 这个线程负责处理:JFrame、JPanel等的绘制、事件处理。 它是由操作系统调用的,在程序启动时开启,程序关闭时消亡。
1216 0
|
开发工具 git 容器
RxJava中几个常用但初学介绍不多的方法介绍
自己学习RxJava的知识点的总结,看了很多篇文章,到现在也算是略有心得;推荐大家如果想了解的可以看看这篇文章,RxJava综合教程(系列版) 不过再详细的讲解还是会有说的不到的地方,比如我最近在做安卓的课设,坑的老师,一开始说没有,最后几天在说,真的是加班加点的干。
954 0