有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案