Как повторять операцию каждые 15 секунд в RXJava2 и как запускать и останавливать ее - PullRequest
0 голосов
/ 01 июля 2018

У меня есть поток, который выполняет операции HTTP, обновляет интерфейс и повторяется каждые 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 голосов
/ 01 июля 2018

Вы не можете повторно использовать Observer. Вместо

.subscribeWith(MainCulc_Observer);

сделать

.subscribeWith(new DisposableObserver<Long>() {

@Override
public void onError(Throwable e) {
}

@Override
public void onComplete() {
}

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