java如何更好地使用RxJava+改造?
我知道创建RxJava是为了让代码像流一样。然而,在我的代码中,实际上我必须频繁地发出HTTP请求,而且我发现每次使用RxJava+改造来完成网络工作时,它都不那么优雅,因为我必须多次编写相同的代码。 所以我把下面的代码封装起来
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的概念
共 (0) 个答案