Я знаю, что RxJava созданы, чтобы сделать код похожим на stream.However, в моих кодах, на самом деле мне приходится часто делать HTTP-запросы, и я считаю его менее изящным каждый раз, когда я использую RxJava + Retrofit, чтобы сделать сетевое задание, потому что я приходится писать одни и те же коды много раз. Поэтому я Enclosure коды, как показано нижеКак использовать RxJava + Retrofit лучше?
public APIHelper(String url){
retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(url)
.client(setheader())
.build();
}
private static OkHttpClient setheader() {
OkHttpClient httpClient = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request()
.newBuilder()
.addHeader("UserID", "")
.addHeader("hec-username", USERNAME)
.addHeader(AUTHENTICATION_KEY, TOKEN)
.build();
return chain.proceed(request);
}
}).build();
return httpClient;
}
public Retrofit getRetrofit(){
if(retrofit!=null)
return retrofit;
else
return null;
}
public void excuteRxJava(Observable<T> observable){
observable
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<T>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(T t) {
doNext(t);
}
});
}
public abstract void doNext(T t);
public abstract List<S> doInFrom(T t);
public abstract void doAction(T t);
Некоторые другие абстрактные методы используются, чтобы сделать что-то в onDoNext, flatMap например, И я хочу спросить, является ли это инкапсуляция подходящей для концепции Rx?
спасибо, и я научусь код –
е ,,, я новичок – WangDaFu
握 爪 ..... ......... –