subscribe() 中的消费者方法只被调用一次
consumer method inside subscribe() is only called once
所以我有下面这个方法,当我点击一个按钮时它会启动一个计时器 '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();
}
}
)
);
}
我认为这是因为变量时间。可能第一次调用 timestart() 后就不能再为正了。 (您的代码部分没有显示哪个其他函数可以更新时间或初始化在哪里)
所以我有下面这个方法,当我点击一个按钮时它会启动一个计时器 '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();
}
}
)
);
}
我认为这是因为变量时间。可能第一次调用 timestart() 后就不能再为正了。 (您的代码部分没有显示哪个其他函数可以更新时间或初始化在哪里)