首页 > 解决方案 > RXJava2中如何每15秒重复一次操作以及如何启动和停止

问题描述

我有一个执行 HTTP 操作、更新 UI 并每 20 秒重复一次的线程。

我需要将此 java 线程转换为 RXJava2 (Android RX)。

当应用程序处于睡眠模式(onPause)时无需运行它但是当用户返回应用程序(onResume)时,observable 需要立即订阅并运行(Emits Data),然后继续 20 秒的重复。

我设法执行重复操作并在 onPause 中取消它,但我无法在 onResume 方法中再次执行订阅操作 - 它只是停止。

这是我的代码。谢谢你。

 protected void onResume() {
super.onResume();
     disposables = MainCulc_Observable()
  .interval(0, 5, TimeUnit.SECONDS)
  .subscribeOn(Schedulers.io())   // Run on a background thread
  .observeOn(AndroidSchedulers.mainThread())     // Be notified on the main thread
  .subscribeWith(MainCulc_Observer);
 } 

   @Override
 protected void onPause() {
super.onPause();

 disposables.dispose();
}

  DisposableObserver MainCulc_Observer = new DisposableObserver<Long>() {

@Override
public void onError(Throwable e) {
}

@Override
public void onComplete() {
}

@Override
public void onNext(Long status) {
}
   };

标签: javaandroidrx-java2

解决方案


您不能重复使用Observer. 代替

.subscribeWith(MainCulc_Observer);

.subscribeWith(new DisposableObserver<Long>() {

@Override
public void onError(Throwable e) {
}

@Override
public void onComplete() {
}

@Override
public void onNext(Long status) {
}
   };)

推荐阅读