java - 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) {
}
};
解决方案
您不能重复使用Observer
. 代替
.subscribeWith(MainCulc_Observer);
做
.subscribeWith(new DisposableObserver<Long>() {
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
@Override
public void onNext(Long status) {
}
};)
推荐阅读
- tensorflow - Using Tensorflow Dataset in Keras
- javascript - TypeError:无法读取未定义的属性“值”(第 37 行,文件“代码”) - Google Apps Scrit
- python - python比较两个数据帧值并从第一个数据帧中获取不同的值
- react-native - 如何输入图像链接并使其显示在下面的黄色视图中?
- java - 测试 java 对象是否从 jar 文件执行?
- javascript - 如何使用 express nodejs 接收 axios 发布请求的正文?
- ruby - HTTP 更改变量并重新加载 Sinatra
- python - Matplotlib.pyplot 不会显示情节
- c++ - 为什么这会返回“NO”?
- google-bigquery - BigQuery 中的“events_intraday_YYYYMMDD”表中没有网络数据