Ich weiß, dass RxJava erstellt werden, um den Code wie einen Stream zu machen. In meinen Codes muss ich jedoch HTTP-Anfragen häufig stellen, und ich finde es weniger elegant jedes Mal, wenn ich RxJava + Retrofit für Netzwerk-Job verwende, weil ich müssen die gleichen Codes viele Male schreiben. So Einschließung ich die Codes wie untenWie verwende ich RxJava + Retrofit besser?
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);
Einige andere abstrakte Methoden verwendet werden, etwas in onDoNext zu tun, flatMap z.B. Und was ich fragen möchte ist, ist diese Verkapselung für das Konzept von Rx geeignet?
danke, und ich werde den Code –
e lernen ,,, ich bin Anfänger – WangDaFu
握 爪 ..... ......... –