我正在使用rxjava进行改造。在以下代码中,subscribeOn()和observeOn()继续运行。该应用程序不断终止并自行启动。
disposable = api.getUsers("135")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
users -> showResult(users)
})
如果我在上面之后立即处理它将无法获取完整数据。所以我的问题是何时处理dispoable或如何知道subscribeOn()和observeOn()何时完成了它的任务。
或者你可以在你的dispose
的onDestroy()
Activity
。
或者你可以使用DisposableSingleObserver
,如下:
Disposable disposable = yourApi.subscribeWith(new DisposableSingleObserver<List<String>>() {
@Override
public void onSuccess(List<String> values) {
// work with the resulting values
}
@Override
public void onError(Throwable e) {
// handle the error case
}
});
然后在使用结果后(在此示例中,当您不再需要值(api响应)时,您可以调用dispose
disposable.dispose();
处置观察者的最佳地点将在onDestory()
,这将是您不再需要api结果的地方:
protected void onDestroy(){
super.onDestroy();
disposable.dispose();
}