改造实施最佳实践

Kou*_*nha 5 android retrofit

我们正在使用 Retrofit 构建一个应用程序,其中我们有一个单独的模块来连接我们的后端。按照目前的设计方式,在模块中,我们有一个 RestClient 类,其中包含用路由定义的其余适配器和接口。为简单起见,我提供了一个示例休息端点。

// Rest adapter instance
    private static RestAdapter getRestAdapter() {

        if (!isDebuggable) {
            URL = URL_PROD;
        } else {
            URL = URL_UAT;
        }

        if (mRestAdapter != null) {
            return mRestAdapter;
        }
        return mRestAdapter = new RestAdapter.Builder()
                .setEndpoint(URL)
                .setRequestInterceptor(authHeader())
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .build();
    }


private interface IApiClient {

        @POST("/register")
        void register(@Body JsonObject dataObject, Callback<SignInResponse> signInResponseCallback);

}
Run Code Online (Sandbox Code Playgroud)

对应的客户端定义如下:

public static void register(JsonObject jsonObject, final ErrorNetworkResponse<SignInResponse> listener) {
        getRestAdapter().create(IApiClient.class).register(jsonObject, new Callback<SignInResponse>() {
            @Override
            public void success(SignInResponse signInResponse, Response response) {

                if (listener != null) {
                    listener.onSuccess(signInResponse);
                }
            }

            @Override
            public void failure(RetrofitError error) {
                Log.e("RegisterAPI", error.toString());
                if (listener != null) {
                    listener.onError(error);
                }
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

现在我知道这种模式不是最优的,因为 1. 我们必须发出大量的休息 api 请求,因此为每个实例重复这么多代码是不可取的。2. 由于我们直接从 Activity 调用客户端,因此可能容易出现 Android 旋转视图问题。我正在寻找的是使用 Otto / EventBus 作为总线系统来提供 api 调用。但即便如此,如何为单个异步请求减少如此多的样板代码?最佳做法是什么?提前致谢!