现在我试图了解如何将RxJava2库与Retrofit2一起使用。
我的Api服务:
public interface ApiService {
@GET
Observable<String> getObservable(@Url String url);
@GET
Flowable<String> getFlowable(@Url String url);
}
和主要活动:
mApiService.getObservable("https://google.com")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableObserver<String>() {
@Override
public void onNext(@NonNull String s) {
Log.d(TAG,"onNextObservable");
}
@Override
public void onError(@NonNull Throwable e) {
Log.d(TAG,"onErrorObservable");
}
@Override
public void onComplete() {
Log.d(TAG,"onCompleteObservable");
}
});
mApiService.getFlowable("https://google.com")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new FlowableSubscriber<String>() {
@Override
public void onSubscribe(@NonNull Subscription s) {
Log.d(TAG,"onSubscribeFlowable");
}
@Override
public void onNext(String s) {
Log.d(TAG,"onNextFlowable");
}
@Override
public void onError(Throwable t) {
Log.d(TAG,"onErrorFlowable");
}
@Override
public void onComplete() {
Log.d(TAG,"onCompleteFlowable");
}
});
在我的日志中,我看到:
为什么我看不到onNextFlowable?我无法得到Flowable的回复。也许有一种更紧凑的编写代码的方法?
答案 0 :(得分:1)
调用网址只返回一个结果或失败(更像Single
或Maybe
)。 Observable
也可以。但Flowable
在这里没有表现出来。
无论如何,请尝试在s.request(1)
的{{1}}中添加onSubscribe(...)
。
Flowable
有“背压”的概念。您必须询问以获取数据。