1.导入依赖
//Retrofit2的依赖
implementation 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
//Rxjava依赖
implementation 'io.reactivex.rxjava2:rxjava:2.1.16'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
2.封装一个网络请求工具类,使用单例模式的双重锁模式
public class RretrofitUtils {
private static RretrofitUtils rretrofitUtils;
private Retrofit retrofit;
private RretrofitUtils(){
retrofit = new Retrofit.Builder()
.baseUrl(Net.URL1)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
public static RretrofitUtils getInstance(){
if(rretrofitUtils == null){
synchronized (RretrofitUtils.class){
if(rretrofitUtils == null){
rretrofitUtils = new RretrofitUtils();
}
}
}
return rretrofitUtils;
}
public <T> T create(Class<T> clazz){
return retrofit.create(clazz);
}
}
3.model调用
public class Model {
public Observable<News> getLinener(){
return RretrofitUtils.getInstance().create(MyServerInterface.class).getMyNewsBean();
}
public Observable<Goods> getLineners(int page){
return RretrofitUtils.getInstance().create(MyServerInterface.class).getMyGoodsBean(page);
}
}
4.persenter层通过model对象调用方法
model.getLinener()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<News>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(News news) {
List<News.DataBean> data = news.getData();
viewWeakReference.get().onSuccess(data);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}