androidandroid-Retrofit2.0-RxJavaAndroid

Rxjava 倒计时功能

2017-09-19  本文已影响134人  YbSTGing

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

        //开始倒计时
        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();
                    }
                });
上一篇下一篇

猜你喜欢

热点阅读