Dagger+MVP+Retrofit+Rxjava+Rxlifecycle Demo

来源:互联网 发布:js刷新父页面的frame 编辑:程序博客网 时间:2024/06/05 19:05

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

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

说明:

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

阅读全文
0 0