我通常使用具有以下结构的 单例 模式:
首先定义
ServiceHelper如下:
public class ServiceHelper {private static final String ENDPOINT = "http://test.com";private static OkHttpClient httpClient = new OkHttpClient();private static ServiceHelper instance = new ServiceHelper();private IPlusService service;private ServiceHelper() { Retrofit retrofit = createAdapter().build(); service = retrofit.create(IPlusService.class);}public static ServiceHelper getInstance() { return instance;}private Retrofit.Builder createAdapter() { httpClient.setReadTimeout(60, TimeUnit.SECONDS); httpClient.setConnectTimeout(60, TimeUnit.SECONDS); HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); httpClient.interceptors().add(interceptor); return new Retrofit.Builder() .baseUrl(ENDPOINT) .client(httpClient) .addConverterFactory(GsonConverterFactory.create());}public Call<List<CategoryModel>> getAllCategory() { return service.getAllCategory();}然后将您的所有服务都放入
IService(在我的情况下是
IPlusService)
public interface IPlusService { //@Headers( "Content-Type: application/json" ) in Post method may use this @GET("/api/category") Call<List<CategoryModel>> getAllCategory();}然后在您的活动/片段中按如下所示致电您的 单身人士 :
ServiceHelper.getInstance().getAllCategory().enqueue(new Callback<List<CategoryModel>>() { @Override public void onResponse(Response<List<CategoryModel>> response, Retrofit retrofit) { processResponse(response); } @Override public void onFailure(Throwable t) { processResponse(null); } });


