Rxjava 倒计时功能

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

        //开始倒计时
        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() {
                    @Override
                    public Long apply(Long aLong) throws Exception {
                        return count - aLong;
                    }
                })
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer() {
                    @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 倒计时功能)