Rxjava 实现倒计时的方法

来源:互联网 发布:matlab矩阵最大值位置 编辑:程序博客网 时间:2024/05/17 22:51

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

  • 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<Long>() {                    @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();

原创粉丝点击