Retrofit2 + RxJava2 Flowable 用于 HTTPs 请求
Retrofit2 + RxJava2 Flowable for HTTPs request
现在我正在尝试了解如何将 RxJava2 库与 Retrofit2 一起使用。
我的 Api 服务:
public interface ApiService {
@GET
Observable<String> getObservable(@Url String url);
@GET
Flowable<String> getFlowable(@Url String url);
}
和主要 activity:
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");
}
});
在我的日志中我看到:
- onNextObservable
- onSubscribeFlowable
- onCompleteObservable
为什么我看不到 onNextFlowable?我无法从 Flowable 得到回应。或许有更简洁的代码写法?
调用 URL 是 return 只有一个结果或失败的事情(更像是 Single
或 Maybe
)。 Observable
也工作。但是 Flowable
在这里没有意义。
无论如何,尝试在 Flowable
的 onSubscribe(...)
中添加 s.request(1)
。
Flowable
有 "backpressure" 的概念。您必须询问 数据。
现在我正在尝试了解如何将 RxJava2 库与 Retrofit2 一起使用。
我的 Api 服务:
public interface ApiService {
@GET
Observable<String> getObservable(@Url String url);
@GET
Flowable<String> getFlowable(@Url String url);
}
和主要 activity:
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");
}
});
在我的日志中我看到:
- onNextObservable
- onSubscribeFlowable
- onCompleteObservable
为什么我看不到 onNextFlowable?我无法从 Flowable 得到回应。或许有更简洁的代码写法?
调用 URL 是 return 只有一个结果或失败的事情(更像是 Single
或 Maybe
)。 Observable
也工作。但是 Flowable
在这里没有意义。
无论如何,尝试在 Flowable
的 onSubscribe(...)
中添加 s.request(1)
。
Flowable
有 "backpressure" 的概念。您必须询问 数据。