gpt4 book ai didi

java - Android RxJava Observable.interval() 不会停止发射项目

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:30 30 4
gpt4 key购买 nike

我有一个静态字段

 private static Subscription timer;

和两个静态方法:

public static void setTimer() {
timer = Observable.interval(2, TimeUnit.SECONDS, Schedulers.computation())
.doOnNext(tick -> update(tick))
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
}

public static void removeTimer() {
if (timer != null && !timer.isUnsubscribed()) {
timer.unsubscribe();
timer = null;
}
}

猜测取消订阅后 Observable 必须停止发射项目。但是它不起作用。如果函数 updatePrices 是

private static void update(long tick) {
Log.d(TAG, "tick");
}

调用 removeTimer() 后继续打印日志。

所以问题是如何正确停止在我的 Observable 中发射项目?

已解决

问题出在对 setTimer() 的两次调用中。

但是我还有一个问题。谁能解释为什么旧的计时器副本在第二次调用 setTimer() 后仍然继续发出项目?

最佳答案

也许为时已晚,但可能对其他人有帮助!

Observable.interval(TICK_MILLIS, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.map(v -> v * TICK_MILLIS) // use to map value to onNext func,
.takeUntil(v -> v > MAX_TICKS) // Stop Timer here.
.take() // You can use take to stop timer after N count
.subscribe(this::onNext, Log::d ,this::onComplete);

关于java - Android RxJava Observable.interval() 不会停止发射项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38154520/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com