基础篇中我们已经掌握了MVP的所有流程,项目地

2019-09-30 15:32栏目:美高梅开户送58元官网
TAG:

在上篇文章玩转MVP模式 - 基础篇中我们已经掌握了MVP的所有流程,但是遗留了两个问题:1.我们每增加一个View就得增加一个相应的Presenter以及一个Model,然后每次都重复造轮。2.activity持有presenter的引用,当activity销毁时回导致内存泄露。所以在本篇文章中我们来将其封装并解决内存泄露问题。

由于找工作没有找到,写了一个练手项目。用的MVP模式开发的,想着以后还会用到,专门把这MVP的相关代码提取出来当一个类库来使用。项目地址:

关于MVP、Retrofit、RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳:1、Android MVP 实例2、Android Retrofit 2.0使用3、RxJava4、RxBus

创建包以及需要的类

美高梅开户送58元官网 1base

XMVPLibrary和example地址:

假设,您对MVP、Retrofit、RxJava已经有了一点了解,那么我们开始本文:

BaseActivity

美高梅开户送58元官网 2BaseActivity

XMVPLibrary example apk下载,该APP可浏览xmvp和example代码哦

1、MVP绑定Activity生命周期按照之前的文章,每个Presenter都得初始化和销毁,我新加MvpActivity(MvpFragment),加了抽象方法protected abstract P createPresenter();这样做的目的在需要使用MVP的地方,可以继承MvpActivity(MvpFragment),然后初始化和销毁就不用手动一个个去加了。

BasePresenter

美高梅开户送58元官网 3BasePresenter

主要需要一个Presenter、View接口,MainPresenter引用的View接口,MainActivity直接引用的MainPresenter类。不用管MainPresenter的实例化在代码中通过的泛型实例化的MainPresenter。

2、接口请求等还是放到MVP的P中

改善既有代码

Ok,到现在为止我们已经封装成功并且解决了内存泄露问题,现在我们把之前的代码进行改造,看看封装之后我们写一个View的代码量能减少多少吧~

添加依赖到项目build.gradle中

dependencies { compile 'com.github.xujiaji:xmvp:0.0.4'}

美高梅开户送58元官网 4

MainPresenter

美高梅开户送58元官网 5美高梅网上游戏,MainPresenter可以看到对于MainPresenter,我们甚至连显示的构造函数也不需要写!需要Model时我们直接getModel()就可以!需要View时我么直接getView()就可以!

第一步:定义Contract

美高梅开户送58元官网,需要定义一个Contract,Contract接口中定义Presenter和View接口,它们分别继承XContract.Presenter和XContract.View。说不清楚了,还是看一下栗子吧!

public interface MainContract { interface Presenter extends XContract.Presenter{ void requestTextData(); } interface View extends XContract.View{ void showText(String text); }}

Presenter接口就是MVP中的P,调用modle和view。

这个图片,在当时写MVP文章时给出的,实际开发中,我发现每个都这样写,实在是增加了不少代码,然接口请求放到P中,还有个好处,就是MVP绑定Activity生命周期,当onDestroy时取消RXJava注册,以避免内存泄露。

版权声明:本文由美高梅开户送58元官网发布于美高梅开户送58元官网,转载请注明出处:基础篇中我们已经掌握了MVP的所有流程,项目地