美文网首页程序猿
Dagger+Retrofit+Rxjava+Rxlifecyc

Dagger+Retrofit+Rxjava+Rxlifecyc

作者: 一花亦城 | 来源:发表于2017-08-18 14:26 被阅读106次

    地址:https://github.com/rongkun/Dagger2Rxjava2Retrofit2Demo

    kotlin版本:https://github.com/rongkun/BaseKotlin

    java版本说明:

    1、运行环境:Android studio3.0+(不能用2.3及以下)

    2、代码介绍:

    (1)baselib介绍:

    如上图,base文件主要包含BaseActivity 、BaseView等基础类,精简代码,方便开发

    dagger文件包含dagger2的各种配置,PerActivity为自定义注解,在Activity使用dagger2配置时经常会用到。当全局单例是用的是@Singleton,局部单例用@Scope,这里为了减少代码量自定义了PerActivity

    dagger下NetModule.class为retrofit2的配置,在app全局提供单例

    如何给全局提供单例呢?

    首先看Base文件下的BaseApplication

    代码中我们可以看到,appli在启动时就创建了DaggerAppcomponent,有人下载demo后会显示找不到文件错误,点击工具类build->make project即可解决

    (2)app主module介绍

    UML图解:


    网络配置在net文件夹下,如图:

    retrofi结合rxjava,采用背压式控制,get方法。例程为获取天气接口,baseUrl在baselib中配置。如果有不同的网址,可直接写全路径,如http://www.***/***.com/open/weather,这样将不会拼接baseurl

    重点部分

    activities.main为Activity使用例子,MainContract为View及Presenter的接口。MainActivity将实现该View接口,MainPresenter实现Present接口。

    Activity中调用

    .appcomponent获取全局的单例,mainmodule获取局部单例(可在MainModule添加所需创建的对象),最后调用inject将这些数据注入到该Activity中

    使用@Inject注入所需对象。MainPresenter的构造函数使用了@Inject注解,当创建MainPresenter时将自动调用@Inject注解的函数。因为没有在module写MainPresenter的创建方法,所以写了setpresent方法将presenter实例传给Activity

    相关文章

      网友评论

        本文标题:Dagger+Retrofit+Rxjava+Rxlifecyc

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