Rxjava 倒计时功能

作者: YbSTGing | 来源:发表于2017-09-19 17:11 被阅读134次

    功能:进行倒计时。
    直接上代码,具体说明写在注释里面了。

            //开始倒计时
            final int count = 3;//倒计时3秒
            Observable.interval(0, 1, TimeUnit.SECONDS)//延迟0,间隔1s,单位秒
                    .take(count + 1)//限制发射次数(因为倒计时要显示 3 2 1 0 四个数字)
                    //使用map将数字转换,这里aLong是从0开始增长的,所以减去aLong就会输出3 2 1 0这种样式
                    .map(new Function<Long, Long>() {
                        @Override
                        public Long apply(Long aLong) throws Exception {
                            return count - aLong;
                        }
                    })
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Observer<Long>() {
                        @Override
                        public void onSubscribe(Disposable d) {
    
                        }
    
                        @Override
                        public void onNext(Long num) {
                            //接收到消息,这里需要判空,因为3秒倒计时中间如果页面结束了,会造成找不到 tvAdCountDown
                            if (tvAdCountDown != null) {
                                tvAdCountDown.setText(String.format(tvAdStringFormat, num));
                            }
                        }
    
                        @Override
                        public void onError(Throwable e) {
    
                        }
    
                        @Override
                        public void onComplete() {
                            //完成之后跳转到主页面
                            startMainActivity();
                        }
                    });
    

    相关文章

      网友评论

        本文标题:Rxjava 倒计时功能

        本文链接:https://www.haomeiwen.com/subject/zoqgsxtx.html