我有一个线程进行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) {
}
};
答案 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) {
}
};)