-
Notifications
You must be signed in to change notification settings - Fork 64
LayeredArchitecture
分层架构的主要目的是为了将Activity和Fragment中繁重的数据处理逻辑抽离出来交由一个中间层处理,并统一管理缓存、数据库、网络调用,向上层提供封闭数据获取细节,以此减少Activity和Fragment的负担。大幅提升项目的可读性、健壮性、可维护性。
framework模块的结构和app工程的建议结构如图

应用整体分为4层,各层概要介绍如下:
-
UI层:应用UI相关的模块,比如Activity、Fragment、Dialog、自定义View等,Activity、Fragment、DialogFragment除非是有特殊用途,否则建议整体继承自framework包的BaseActivity、BaseFragment等基类,享受框架提供的功能。
-
DataManager层:负责应用整体的数据管理,UI层与其交互通过该层提供的ActionCallbackListener接口,在回调中返回数据。UI层不可直接处理缓存,网络调用,这些功能应该全部由DataManager负责。
-
DataStore层:本层主要由各种数据管理类和声明的Server API组成,提供实例给上层调用
-
Support:本层包含各种工具类、系统功能的封装和第三方SDK模块,为整个App提供支持,从严格意义上来讲并不属于“层”更像是App的Support Library,整个App内各层皆可使用本模块提供的功能,但是同理,跟UI相关的封装和工具类仍然应该只在UI层中使用。

使用RxJava与不使用RxJava最大的区别是可以将绝大部分业务调用交给RxJava统一管理,其它结构与基本分层完全一致。
由于RxJava的接入,在Activity基类和DataManager中也就不存在管理Retrofit Calls的逻辑。使用rx-lifecycle框架可以很轻松的将Observable的订阅与UI的生命周期绑定,避免在网络较差的条件下因回调时UI销毁而产生崩溃或数据异常