Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)

前言:

上一篇介绍了一个App在开始之前的技术选型之类的准备工作,这一篇开始真正的实操项目。

首先确认了App整体使用MVP的架构模式,在网络请求方面整合了Retrofit+Rxjava,并完成了项目的基本建设。
看完这篇文章你会学到:

  • Android MVP架构搭建
  • 基础的基类设计:BaseApplication、BaseActivity、BaseView、BasePresenter…
  • MVP + Retrofit + Rxjava封装整合

项目地址:

https://github.com/bigname22/Android-BaoBingManager

Android MVP架构搭建

BaseApplciation,BaseAvtivity的设计

BaseApplciation暂时没有加入什么设计,后面可以用来做全局的一些配置、初始化等等,
贴一下BaseActivity的代码:
Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)
将代码按步骤拆分,

  • initBeforeSetContentView()
  • getLayoutId()
  • init()
  • bindPresenter()
  • initData()
  • initView()
    要注意的是,里面地presenter的对象做了一些初始的绑定以及销毁操作。
    因为BaseView是实现了IBaseView的,所以避免IBaseView中showLoading() hideLoading() showToast()这样的方法重复写,所以加了个BaseSimpleActivity对这些功能做了基本的实现,往后的Activity可以直接继承这个
    Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)
    在设计BaseActivity要充分考虑与IBaseView的关系
Android MVP的架构搭建

在搭建一个MVP的架构之前,最好先阅读官网给出的MVP案例,其实有很多不同的实现方式。下面带大家看一下我搭建这个MVP结构做的一个目录结构:
Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)
最主要的是model/view/presenter这个目录对应着这个MVP的模式,contract是对view跟presenter进行一个抽象,理解为两者的合约,好处就是通过这里你能直接看到view跟presenter两者一个关系,面向接口编程。
首先贴出IBaseView代码
Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)

IBaseView的子类就是Activity,在考虑IBaseView设计的时候尽量只包含共同的行为即可。由于这些共同行为具体表现大部分都是一样的,所以我又增加了BaseSimpleActivity去实现了这些行为的具体表现,如果没有这个的话,那每个继承BaseActivity的Activity都要去重复实现那些基本动作。
IBasePresenter因为IBasePresenter是View与Model的桥梁,所以先理清楚这三者的实现思路。

1:View有需求,他需要显示用户头像(但他不知道怎么拿)
2:Presenter收到View的需求,但他并不具有拿头像的行为,但他知道Model有这个行为,所以Presenter通知Model去拿(Presenter知道View要拿什么,并且知道找哪个Model去拿)
3:Model收到Presenter的通知去拿头像,拿到了交给Presenter(他其实也不知道要来干嘛)
4:Presenter拿到头像之后把它交给View

那么此时该清楚Presenter应该要持有View与Model的对象了,IBasePresenter的代码如下:
Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)
这些设计都使用了很多泛型,因为很多都是类型不确定的,so…
因为IBasePresenter的行为实现几乎都是确定的,所以我又创建了BaseSimplePresenter去实现这些行为,减少重复实现。
最后贴一下Constract合约的代码:
Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)

MVP + Retrofit + Rxjava封装整合

首先你要学习MVP,看完上面基本都懂的吧,然后分别学习Retrofit,Rxjava;最后如何整合到一起。

  • 封装Retrofit,并完成Api类
  • Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)

Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)
如何使用呢?
创建Api实例对象,调用login()//实际上发起网络请求,得到响应对象response(观察者),然后回调响应处理的方法。ICallBack是自定义的响应接口,发起网络请求后响应时调用相应的方法即可
Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)
Android:Mvp+Retrofit+Rxjava网络框架整合--从零开始设计一款Android App(第二篇)
在集成、以及使用时要区分retrofit 1版本以及2版本。.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
这个加粗的2要注意。我是用的是2.所以上面也用2

  • implementation ‘io.reactivex.rxjava2:rxjava:2.1.5’
  • implementation ‘io.reactivex.rxjava2:rxandroid:2.0.1’
  • implementation ‘com.squareup.retrofit2:retrofit:2.2.0’
  • implementation ‘com.squareup.retrofit2:converter-gson:2.2.0’
  • implementation ‘com.squareup.retrofit2:adapter-rxjava2:2.2.0’

那么这篇文章暂时就到这里了,感谢各位大佬的观看。
下一篇预告:登陆注册模块设计