#前言
我根据在项目中使用过 mvp、mvp+databinding、mvp+Rxjava ,通过阅读google给出的mvp各种示例,对mvp进行总结实现mvp+databinding+Rxjava的实现方式;
我对于mvp-databinding-Rxjava的理解
我认为在android中M 就是Model 是操作数据的地方,在M 中可以调用各种处理数据的Manager,View 是activity,fragment等,在加上databinding可以在绑定数据,p是连接m与v之间的桥梁,以及控制一些需要在主线程实现的数据通过RxAndroid 切换到主线程中;我认为使用databinding的好处可以不用写findview,显示数据的时候直接set进去就可以了,不需要通过id在settext的方式,还有就是有一些数据是可以不需要切换ui线程,直接set就可以;而使用Rxjava的好处是可以不需要通过handler就可以实现对线程的切换,可以直接显示数据;
学习经历
在项目中使用过的mvp模式,也使用过mvvm模式,但是一直不知道怎么实现是对的,在使用过程中总是感觉有一些,感觉不舒服的地方,先说说我是用mvp的经历,主要是用过三种方式,最开始是使用zjutkz的一篇博客选择恐惧症的福音!教你认清MVC,MVP和MVVM,在这篇博客中我学会了如何使用mvp,发现这个模式实在的太美了,业务与页面完全分离,实现业务的时候只需要实现业务就可以,实现页面只需要实现自己的页面就好了,不需要关注太多,而且如果哪一天,经理说界面哪里不好看,需要改,直接修改页面就好了,完全不需要关注业务,如果要是说需求有变化,那么直接改变业务模块就可以了,而且各个模块之间尽量的实现了解耦,方便以后修改,但是在使用过程中感觉有点麻烦,之后又看了 MvpFrame一个比较简单的mvp架构,但是我发现在使用过程中对项目的侵入性很强,也有可能是我的强迫症,总是感觉没有真正的了解mvp,于是决定阅读google给出的mvp示例 google ,通过在项目中的使用,得出自己的mvp实现方式;
开始放码
demo地址
BasePresenter 中主要为了与Activity或者fragment中的生命周期统一,避免内存泄漏
BaseView中只是对P进行绑定,如果要是在Activity中使用可以不去管这个方法;
BaseModel 对基础数据处理的实现,对于事件传递我使用了rxjava实现的Rxbus,不了解的可以看一下我之前的一篇rxbus的博客RxJava实现事件总线 Rxbus代替eventbus 减少库的使用
还有两个我封装的基础类需要了解一下,不想看的这一步可以掠过嘿嘿,这两个基础类主要是通过封装减少代码;这个目前只是简单的封装以后还会对这些部分进一步的进行封装;
BaseActivity
BaseDialog
为防止代码量过大,我将会把具体实现方式放在下一篇文章里面给出,google 官方mvp实例的实践之mvp-databinding-Rxjava(二)