美文网首页Rx终端研发部
MVP+Dagger2+Retrofit2.0+Rxjava看这

MVP+Dagger2+Retrofit2.0+Rxjava看这

作者: goodgleCoder | 来源:发表于2017-08-26 17:09 被阅读151次

最近有小伙伴问我有没有一个MVP+Dagger2+Retrofit2.0+Rxjava的案例,自己还没完全集合实现。今天就介绍一个开源项目:owspace。基于MVP+Dagger2+Retrofit2.0+Rxjava的一款APP供大家去学习和参考。

owspace是一款高仿单读的APP,API接口通过非法手段获取。

你能学到

  • MVP模式

  • Retrofit2.0 + rxjava

  • Dagger2

  • jsoup解析DOM

  • sqldelight SqlBrite

  • 音视频播放等

  • some fucking source code

采用了mvp的模式和dagger2注解。

关于mvp的优势:

  • 模型与视图完全分离,我们可以修改视图而不影响模型

  • 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部

  • 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。

  • 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)

下面是mvp的架构图:

关于mvp还可以参考:

一个关于MVP+Retrofit+Rxjava应用的实战

Dagger2

看看Dagger2 的流程:

image

Dagger2的优点

  • 全局对象实例的简单访问方式

    和ButterKnife 库定义了view,事件处理以及资源的引用一样,Dagger2 提供全局对象引用的简易访问方式。声明了单例的实例都可以使用@inject进行访问。比如下面的MyTwitterApiClient 和SharedPreferences 的实例:

    public class MainActivity extends Activity {
     @Inject 
     MyTwitterApiClient mTwitterApiClient; 
     @Inject
     SharedPreferences sharedPreferences;
    
     public void onCreate(Bundle savedInstance) {     // assign singleton instances to fields
         InjectorClass.inject(this);
     }
    
  • 复杂的依赖关系只需要简单的配置

    Dagger2 会通过依赖关系并且生成易懂易分析的代码。以前通过手写的大量模板代码中的对象引用将会由它给你创建并传递到相应对象中。因此你可以更多的关注模块中构建的内容而不是模块中的对象实例的创建顺序。

  • 让单元测试和集成测试更加方便

    因为依赖关系已经为我们独立出来,所以我们可以轻松的抽取出不同的模块进行测试。依赖的注入和配置独立于组件之外。因为对象是在一个独立、不耦合的地方初始化,所以当注入抽象方法的时候,我们只需要修改对象的实现方法,而不用大改代码库。依赖可以注入到一个组件中:我们可以注入这些依赖的模拟实现,这样使得测试更加简单。

  • 作用域实例(Scoped instances)

    我们不仅可以轻松的管理全局实例对象,也可以使用Dagger2中的scope定义不同的作用域。(比如根据user session,activity的生命周期)

效果图:

声明

单读这个文艺的APP本人比较喜欢,一时冲动就抓取了数据,反编译了APP。so,API接口是通过非法手段获取,严禁商用,违者后果自负。

  compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile(name: 'SildeMenulibrary-release', ext: 'aar')
    compile(name: 'ObservableScrollView-release', ext: 'aar')
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'net.danlew:android.joda:2.9.3'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.squareup.sqlbrite:sqlbrite:0.7.0'
    compile 'io.reactivex:rxandroid:1.2.1'
    compile 'io.reactivex:rxjava:1.1.6'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.elyeproj.libraries:loaderviewlibrary:1.2.1'
    compile 'in.srain.cube:ultra-ptr:1.0.11'
    compile 'com.android.support:recyclerview-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'
    compile 'org.jsoup:jsoup:1.7.3'
    compile 'pub.devrel:easypermissions:0.2.0'
    compile 'com.wang.avi:library:2.1.3'
    compile 'com.google.dagger:dagger:2.7'
    apt 'com.google.dagger:dagger-compiler:2.7'
    compile 'org.glassfish:javax.annotation:10.0-b28'
    compile 'uk.co.chrisjenx:calligraphy:2.2.0'

项目地址:

https://github.com/babylikebird/owspace

相信自己,没有做不到的,只有想不到的

如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :644196190
微信公众号:终端研发部

技术+职场

相关文章

  • MVP+Dagger2+Retrofit2.0+Rxjava看这

    最近有小伙伴问我有没有一个MVP+Dagger2+Retrofit2.0+Rxjava的案例,自己还没完全集合实现...

  • 看这看这!

    hi,做个自我介绍 我是贝贝 至于全名不要在乎 或许贝贝也不是真名。我的文章有没有人看无所谓 有人看当然是好的啦 ...

  • 看这,看这

    开学第一天,步入校园,见此情景,我情不能自抑。 心思翻卷红艳艳的逗化了个蝴蝶妆数日不见让秋逊色的垂下头颅 只要有感...

  • 无标题文章

    看看这是啥看看这是啥看看这是啥看看这是啥看看这是啥看看这是啥看看这是啥看看这是啥看看这是啥看看这是啥看看这是啥看看...

  • 看这里看这里

    国信恒通科技有限公司诚聘全兼职工作人员: 全职:人事接待,招聘5名,无责底薪2500+500全勤+提成 要求:大专...

  • 看这里、看这里

    稻盛和夫灌输敬天爱人的哲学思想,用他的人生信仰,整合日航员工朝着一个目标奋斗,激发员工的那份尘封的热情,改变了员工...

  • 看这里,看这里!

    第一次阅读《看这里,看这里!》这本绘本时,觉得特别有意思,几乎是一本无字书,整本书只有三句话: 看这里,当心,出去...

  • 蒙了,新冠是不是SARS病毒?

    先看这个: 再看这个:

  • 语文笔记|看这 看这

  • 游戏专题:致文艺怪咖—还可以这样讲故事

    羊年,玩不一样 文艺怪咖,请看这里。运动达人,请看这里。进步青年,请看这里。动漫宅腐,请看这里。技术大牛,请看这里...

网友评论

    本文标题:MVP+Dagger2+Retrofit2.0+Rxjava看这

    本文链接:https://www.haomeiwen.com/subject/gfxsdxtx.html