组件化项目简介

组件化

  • app:主项目
  • home,product,mall,account分别对应项目四个tab
  • productDetail是home和product公用的产品详情页
  • basilib:基础类库,一些公共的第三方包放在这里
  • basicres:公共资源,BaseActivity,BaseFragment,BaseApplication,图片等
  • remote:网络
  • mediator:中介者,组件之间通过中介者来通讯

组件之间的组合

在每个组件的gradle.properties可以设置这个组件依赖了哪些组件

如app的gradle.properties
product的gradle.properties

关于组件化详细内容参考

https://github.com/luojilab/DDComponentForAndroid

Dagger2

Dagger2是一个依赖注入的框架,目的是为了解耦,达到控制反转的目的

项目中di包里的都是Dagger2的内容

官方地址:

https://github.com/google/dagger

网络

网络使用了okhttp + retrofit2 + rxjava2

官网
  • retrofit2: http://square.github.io/retrofit/
  • okhttp: http://square.github.io/okhttp/
  • rxjava: https://github.com/ReactiveX/RxJava

rxlifecycle

rxJava存在一个普遍的问题就是有可能会发生内存泄露(比如从页面A跳转到页面B,页面A应该及时取消订阅),所以需要用到rxlifecycle

如com.madai.remote.repository.ProductRepository中的bindUntilEvent

项目架构

业务组件(如home,product等)的设计参照了看这里

并且做了一些精简

考虑到本项目对于数据持久化的需求不是很大,所以去掉了ROOM(本地数据库)

使用到了LiveData,ViewModel

第三方库的引入

所有第三方库的内容都写在versions.gradle,以保证各个组件引用的库版本一致

Databinding

Databinding用于界面和数据的绑定

官方文档: https://developer.android.com/topic/libraries/data-binding/index.html

你可能感兴趣的:(组件化项目简介)