作为一名安卓应用开发者来说,构建出稳定、高效、合理、易维护的安卓App一直都是我们追求的目标。对此老大哥谷歌给我们做出了很好的指导。废话不多说,先来了解一下官方对构建一个高质量的APP提出的建议。
- 整体框架图
可以看出采用的是MVVM的构架模式,Repository及其分支是数据中心(Model),Activity/Fragment是(View),ViewModel就是图中的ViewModel。数据中心采用Retrofit进行网络请求,Room来操作数据库做数据持久化。而ViewModel采用具有生命感知力的LiveData来刷新View层。每个模块分工明确、各施其职,符合官方提出的两大原则:1.关注点分离;2.持久化的Model驱动UI。所以我想我们的项目目录结构应该是这样的
我多了一个di目录这是Dagger2依赖注入,我是一个爱动手不爱说话的人,接下来我会记录下我是怎么一步一步实现这个框架的。
- 实战操作
-
在项目中新建一个versions.gradle文件用来管理用到的Java库,内容如下
-
/** * Shared file between builds so that they can all use the same dependencies and * maven repositories. **/ ext.deps = [:] def versions = [:] versions.arch_core = "2.0.0" versions.room = "2.1.0-alpha03" versions.lifecycle = "2.0.0" versions.support = "1.0.0" versions.dagger = "2.16" versions.junit = "4.12" versions.espresso = "3.1.0-alpha4" versions.retrofit = "2.3.0" versions.okhttp_logging_interceptor = "3.9.0" versions.mockwebserver = "3.8.1" versions.apache_commons = "2.5" versions.mockito = "2.7.19" versions.mockito_all = "1.10.19" versions.mockito_android = "2.22.0" versions.dexmaker = "2.2.0" versions.constraint_layout = "2.0.0-alpha2" versions.glide = "4.8.0" versions.timber = "4.5.1" versions.android_gradle_plugin = '3.3.2' versions.rxjava2 = "2.1.3" versions.rx_android = "2.0.1" versions.atsl_runner = "1.1.0-alpha4" versions.atsl_rules = "1.1.0-alpha4" versions.hamcrest = "1.3" versions.kotlin = "1.3.0" versions.paging = "2.1.0-rc01" versions.navigation = "1.0.0-alpha08" versions.work = "1.0.0-alpha12" def deps = [:] def support = [:] support.annotations = "androidx.annotation:annotation:$versions.support" support.app_compat = "androidx.appcompat:appcompat:$versions.support" support.recyclerview = "androidx.recyclerview:recyclerview:$versions.support" support.cardview = "androidx.cardview:cardview:$versions.support" support.design = "com.google.android.material:material:$versions.support" support.v4 = &