MainInfoPresenter
public void getInfoData(){
Observable<ResponseBody> observable = mModel.requestData();
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseBody>() {
@Override
public void accept(ResponseBody responseBody) throws Exception {
String responsString = responseBody.string();
mRootView.showData(responsString);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
String responsString = throwable.getMessage();
//回传V层
mRootView.showData(responsString);
}
}
);
}
MainInfoContract
public interface MainInfoContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
//数据回显
public void showData(String msg);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
public Observable<ResponseBody> requestData();
}
MainInfoModel
package mymvpdome.bwei.com.mymoduel.mvp.model;
import android.app.Application;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.ActivityScope;
import javax.inject.Inject;
import io.reactivex.Observable;
import mymvpdome.bwei.com.mymoduel.mvp.contract.MainInfoContract;
import mymvpdome.bwei.com.mymoduel.mvp.model.api.service.InfoService;
import okhttp3.ResponseBody;
@ActivityScope
public class MainInfoModel extends BaseModel implements MainInfoContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public MainInfoModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
@Override
public Observable<ResponseBody> requestData() {
InfoService infoService = mRepositoryManager.obtainRetrofitService(InfoService.class);
Observable<ResponseBody> observable = infoService.getData();
return observable;
}
}