在下面的代码中,loadMoreStrings()方法在getLabelsFromServer()完成之前执行它的call()方法。我还在学习RxJava,但我无法让它正常运行。
private void fetchLabels() {
listObservable = Observable.fromCallable(new Callable<List<String>>() {
@Override
public List<String> call() {
return apiService.getLabelsFromServer();
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
loadMoreStrings();
}
@Override
public void loadMoreStrings() {
stringListObservable.subscribe(new Action1<List<String>>() {
@Override
public void call(List<String> label) {
myStrings.addAll(label);
}
});
}
答案 0 :(得分:0)
因为Observable
类型是懒惰的,并且在您订阅它之前它不会发出任何项目。
根据您提供的代码,您未订阅listObservable
。所以它立即完成,你的loadMoreStrings()
方法被调用。