Rxjava 实现倒计时的方法

实现倒计时的方法有很多种,常见的一般有

  • CountDownTimer
 new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {
         mTextField.setText("done!");
     }
  }.start();
  • Thread 新建个 Runnable 每隔一段时间让线程 sleep 下
  • Rxjava 实现
 disposable = Observable.interval(0L, 1L, TimeUnit.SECONDS, AndroidSchedulers.mainThread())
                .subscribe(new Consumer() {
                    @Override
                    public void accept(Long aLong) throws Exception {
                        long offset = 60 - aLong;
                        if (offset <= 0) {
                            //取消
                            disposable.dispose();
                            btnVerifyCode.setText("再次获取");
                            btnVerifyCode.setEnabled(true);
                        }else {
                            btnVerifyCode.setText(String.valueOf(offset) + "秒");
                        }
                    }
                });

或者用intervalRange(long start, long count, long initialDelay, long period, TimeUnit unit, Scheduler scheduler)操作符来实现

最后记得在 Activity 销毁的时候调用 disposable.dispose();

你可能感兴趣的:(学习笔记)