我应该使用单身改装吗?

时间:2016-04-14 16:07:16

标签: android retrofit

我很擅长改造,想知道什么是最佳做法。

以下是我在网上找到的一些抽象代码:

bmp

并且假设我想使用此函数发出api请求/调用

public class RestClient

{
    private static final String BASE_URL = "your base url";
    private ApiService apiService;

    public RestClient()
    {
        Gson gson = new GsonBuilder()
                .registerTypeAdapterFactory(new ItemTypeAdapterFactory()) // This is the important line ;)
                .setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
                .create();

        RestAdapter restAdapter = new RestAdapter.Builder()
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .setEndpoint(BASE_URL)
                .setConverter(new GsonConverter(gson))
                .setRequestInterceptor(new SessionRequestInterceptor())
                .build();

        apiService = restAdapter.create(ApiService.class);
    }

    public ApiService getApiService()
    {
        return apiService;
    }
}

我的问题是我应该创建一个新的restClient对象,还是应该是一个单例,或者ApiService应该是一个单例。

最佳做法是什么?请记住,我不想使用依赖注入,我只想了解如何最好地使用改造。

你们中的一些人如何打电话?

2 个答案:

答案 0 :(得分:9)

您应该以任何您喜欢的方式RestClient作为单身人士(枚举,标准getInstance()甚至double check)。

将它们保持为单身会提高效果,因为您不会每次都创建有价值的对象,例如GsonRestAdapterApiService

修改 可以通过Retrofit同时处理的最大请求取决于HttpClient配置。

OkHttp一起使用时,默认值为64(在Dispatcher中定义)。

然而,它可以通过setMaxRequests()进行操作,请记住不会产生太多线程(它可能会导致OutOfMemory)。

答案 1 :(得分:4)

你拥有的代码很好。您可以将restClient保持为单身,然后只要您想再次发布帖子就调用restClient.getApiService().getPosts();(每次都不要创建新的restClient)。