subscribe()中的consumer方法只被调用一次

时间:2018-01-04 13:47:29

标签: android observable rx-java2

所以我在下面有这个方法,当我点击一个按钮' B' 59秒后,timerview的隐身设置为已消失,代码工作正常,除了, 当我点击按钮' B'再次开始整个过程​​, 什么都没发生! 那是为什么?

@Override
public void timerStart() {

  getCompositeDisposable()
      .add(Observable.interval(0, 1000, TimeUnit.MILLISECONDS)
          .subscribeOn(Schedulers.io())
          .observeOn(AndroidSchedulers.mainThread())
          .subscribe(new Consumer<Long>() {
                         @Override
                         public void accept(Long aLong) throws Exception {
                             if (time > 0) {
                                 String timer = String.format("%s:%s", "00", time <= 9 ? "0" + time : String.valueOf(time));
                                 getMvpView().updateTimer(timer);
                                 time--;
                             } else {
                                 getMvpView().hideTimer();
                             }
                         }
                     }, new Consumer<Throwable>() {
                            @Override
                            public void accept(Throwable throwable) throws Exception {
                                 getMvpView().hideTimer();
                             }
                         }
              )
      );

}

1 个答案:

答案 0 :(得分:1)

我认为这是因为时间的变化。也许在第一次调用timestart()之后它不会再次变为正数。 (您的部分代码未显示哪个其他功能可以更新时间或初始化位置)