Android 下的MVP框架:
简单说明一下
M(Model):数据来源层,可以是本地读取、网络接口获取数据等。
P(Presenter): 持有层,链接M层与V层。
V(View):界面展示层。
当V层需要某个数据的时候,告诉P层,P层告诉M层,M层拿到数据之后,返回数据给P层,P层返回给V层。
当V层主动断开与P层的联系时候,P层也会告诉M层的清理相关数据或结束相关任务。
我们按登录案例讲讲:
我们先看看V层,即Activity代码:
布局:
我们看看BaseMVPActivity代码
我们再看看MVPCallBack接口的方法:
接下来,我们看看P层的实现:
这里LoginPresenter继承BasePresenter,实现抽象方法返回你要绑定的M层。泛型数据是String类型,这个泛型一定要和你LoginActivity继承BaseMVPActivity中的第二个泛型类型一致。
我们看看BasePresenter代码:
接下来,我们看看M层:
LoginMolde继承BaseModel,实现抽象方法getHttpData(),clear()方法是重写父类方法是释放资源和结束任务时候的回调。 泛型数据是String类型,这个泛型一定要和你LoginActivity继承BaseMVPActivity中的第二个泛型、LoginPresenter继承BasePresenter泛型一致。
接下来,我们看看BaseMode代码:
Fragment中使用MVP,我们看看BaseFragment的封装
代码都很简单,和BaseActivcity相差不大。接下来我们看看BaseMVPFragment代码:
代码与BaseActivity唯一区别,就是onDestroyView()处理释放资源。
小总结:使用这一套MVP框架;很简单的界面,没有数据交互的时候,直接继承BaseActivity即可;如果需要使用MVP,则需要继承BaseMVPActivity,另外需要写一个P层继承Base Presenter,M层继承BaseModel。如果你交互的数据返回类型很多,那么你的泛型数据请使用Any(任意类型),你根据返回的state状态做不同的转化,即可。BaseMVPFragment使用同理。