Amj*_*ari 0 android rx-android rx-java2
有没有办法在运行时更改Observable.interval周期?有没有一种方法可以停止和恢复Observable.interval节拍?有没有办法重置间隔时间?
实际上,我正在使用以下代码在一段时间内永远执行某项操作,但是在运行期间我无法对其进行控制,因此必须在运行时停止,恢复,休息和更改周期。
Observable.interval(8, TimeUnit.SECONDS).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
Log.i("TAG", "onSubscribe");
}
@Override
public void onNext(Long aLong) {
myMethod();
}
@Override
public void onError(Throwable e) {
Log.i("TAG", "onError");
}
@Override
public void onComplete() {
Log.i("TAG", "onComplete");
}
});
Run Code Online (Sandbox Code Playgroud)
我尝试用Google搜索它以找到一种解决方案,但不幸的是我没有找到任何解决方案,如果有的话,我需要帮助或资源。
如@DDH所示,也许最简单的方法是取消正在进行的间隔并完全开始新的流程。
但是,如果由于某种原因必须将链保持在间隔以下,则可以通过switchMap运算符切换到新的间隔PublishSubject,例如,由触发:
PublishSubject<Long> newInterval = PublishSubject.create();
newInterval.switchMap(currentPeriod ->
Observable.interval(currentPeriod, TimeUnit.MILLISECONDS)
)
.doOnNext(v -> { /* background work */ })
.observeOn(AndroidSchedulers.mainThread())
.subscribe(/* ... */);
newInterval.onNext(1000L);
// sometime later
newInterval.onNext(200L);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
633 次 |
| 最近记录: |