RetrofitManager是封装的一个工具类,在项目中如果频繁使用Retrofit请求数据,使用RetrofitManager可以减少很多代码量
封装的代码如下
public class RetrofitManager {
private Retrofit mRetrofit;
private String baseUrl;
OkHttpClient client;
private static RetrofitManager mRetrofitManager;
private RetrofitManager(){}
private RetrofitManager(String baseUrl,OkHttpClient client){
this.baseUrl=baseUrl;
this.client=client;
initRetrofit();
}
public static synchronized RetrofitManager getInstance(String baseUrl,OkHttpClient client){
if (mRetrofitManager == null){
mRetrofitManager = new RetrofitManager(baseUrl,client);
}
return mRetrofitManager;
}
private void initRetrofit() {
mRetrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.client(client)
.build();
}
public <T> T setCreate(Class<T> reqServer){
return mRetrofit.create(reqServer);
}
}
retrofit请求网络的方式是使用注解来发送请求,所以这里还封装了一个Constant,它的作用就是当你
的接口比较多的时候,修改比较方便,
public class Constant {
public static final String BASE_URL="http://tingapi.ting.baidu.com/";
}
使用方法
RetrofitManager.getInstance(Constant.BASE_URL,client)
.setCreate(MusicService.class)
.getshu()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(observer);