如何在RXJava2中每15秒重复操作以及如何启动和停止它

时间:2018-07-01 17:19:29

标签: java android rx-java2

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

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

当应用程序处于睡眠模式(onPause)时,无需运行它 但是,当用户返回到应用程序(onResume)时,可观察到的内容需要订阅并立即运行(发射数据),然后继续执行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) {
}
   };

1 个答案:

答案 0 :(得分:1)

您不能重复使用Observer。代替

.subscribeWith(MainCulc_Observer);

.subscribeWith(new DisposableObserver<Long>() {

@Override
public void onError(Throwable e) {
}

@Override
public void onComplete() {
}

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