1
0
mirror of https://github.com/yexuejc/hexi-prv.git synced 2025-12-26 12:41:55 +08:00

README文档完善

This commit is contained in:
2017-07-13 16:28:22 +08:00
parent 7ede3026b1
commit 5c8c96112a

118
README.md Normal file
View File

@@ -0,0 +1,118 @@
# 学习RxJava+Retrofit+OkHttp框架的demo #
## 说明 ##
> 1.使用MVP架构
>
> 2.使用RxJava+Retrofit+OkHttp框架
## 使用解析 ##
> (1).ui --> UI层与Presenter层
>
> 1)*Activity -->activity
> I*View -->activity与presenter的交互接口
> *Presenter -->presenter
>
> 2).ui.base -->VP层super
> 2.1)BaseActivity -->所有activity super,里面包含加载框
> 2.2)BasePresenter -->所有presenter super,初始化View和Context
> 2.3)MvpActivty -->继承自BaseActivity,实例化presenter
>
> (2).model --> model层
>
> 1) BaseModel -->super model. 所有modelImpl的继承父类
>
> 2) model 接口 -->网络请求方法
> (3).bean --> 实体包含普通bean,数据库entity、返回结果Result等
>
> (4).sys --> 系统(全局)级的处理
>
> (5).utils --> 工具包
## 使用步骤 ##
1.创建activity继承MvpActivity
> (1). ceatePresenter()实例化presenter
```
@Override
protected MainPresenter ceatePresenter() {
return new MainPresenter(subscription);
}
```
> (2). onInitLayoutBefore()加载layout
```
@Override
protected void onInitLayoutBefore() {
loadUI(this, R.layout.activity_main);
}
```
> (3). activity中onInitLayoutAfter()之后调用objBeanPresenter.*()方法
```
@Override
protected void onInitLayoutAfter() {
showLoadingDialog();//显示加载框
objBeanPresenter.loadInit();//到presenter去处理逻辑加载数据
}
```
> (4).请求结果更改UI数据和隐藏加载框的处理放回UI(activity)处理通过presenter调用I*View接口实现回调
```
@Override
public void updateInit(String resultStr) {
hideLoadingDialog();
pptIcoListAll.setText(resultStr);
}
```
2.presenter
> (1).调用model请求数据
```
public void loadInit() {
/***
* 请求第一种方式
*/
subscription = PptIcoImpl.getPptIco()//获取PptIco model实例
.listALL()//请方法
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getInitObservable(ResultPptIcoGsonFormat.class));
//观察者模式订阅(创建观察者 (返回数据类型 ))
}
```
> (2).创建观察者级回调处理
```
private <S> BaseObserver getInitObservable(final Class<S> resultDataClass) {
return new BaseObserver<ResultData<S>>(new BaseObserver.HttpCallBack<ResultData<S>>() {
@Override
public void onComplete(int code, ResultData<S> resultDataClass) {
onComplete4Init(code, resultDataClass);//okHttp请求网络之后回调
}
});
}
```
> (3).回调处理 *ps:根据自己的逻辑处理*
```
private <S> void onComplete4Init(int code, ResultData<S> resultDataClass) {
String resultStr = "";
switch (code) {
case 200://请求成功
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(resultDataClass.toString());
System.out.println(json);
Log.e("resule", json);
resultStr = json;
break;
case 500://请求失败
T.showShort(getContext(), getContext().getString(R.string.error_code_500));
break;
}
//返回到UI的处理 *ps: 更改UI数据通过view回调到UI(activity)*
IMainView view = getView();
if (view != null) {
view.updateInit(resultStr);
}
}
```