Avenging:不用 RxJava 和 Dagger 的 Android MVP 示例

Avenging:不用 RxJava 和 Dagger 的 Android MVP 示例
文章目录Avenging不用 RxJava 和 Dagger 的 Android MVP 示例1、 它在解决什么问题2、 项目本身长什么样3、 跑起来需要什么4、 谁会看这个项目Avenging不用 RxJava 和 Dagger 的 Android MVP 示例这个项目在 GitHub 上拿到了 271 个 Star。作者是 Joaquim Ley一个 Android 开发者。他写这个 Avenging 的初衷很简单展示一个不依赖 RxJava 和 Dagger 的 MVP 架构长什么样。架构这个词被讨论了好几年多数时候一上 MVP 就跟着上 Dagger再上 RxJava三件套打包卖。Avenging 把后两件拆掉只留 MVP 骨架让框架的本意露出来。1、 它在解决什么问题Android 老问题Activity 越写越胖业务逻辑、UI 渲染、网络请求、状态管理全堆一块儿。改一个按钮要翻三个文件加一个功能要动五处代码。维护成本随代码量线性甚至指数上升。作者在 README 里也写得直白只用 View-Model最终会变成 everything is connected with everything。MVP 的卖点就是把这事拆开。View 负责显示数据和响应交互Activity、Fragment、Dialog 都算 View。Model 是数据访问层数据库 API 或远程服务。Presenter 在中间从 Model 拿数据交给 View同时管后台任务。三层各司其职业务变化时只动 PresenterUI 调整时只动 View。这不是银弹但在中型应用里能把维护成本压下来。2、 项目本身长什么样Avenging 不是空架子。它接的是 Marvel Comics API拿漫威漫画库的角色、漫画、封面图来展示。这意味着项目里有真实的网络请求、列表渲染、详情页、搜索、错误处理还有对应的 Wear OS 手表版本。该有的工程问题它都遇到了。依赖列表也讲得清楚。Core 层用 Retrofit 做网络、Jackson 做序列化、Mockito 做单测、LeakCanary 查内存泄漏。Mobile 层加 Design Support Library、Picasso 加载图片、Espresso 跑 UI 测试。Wear 层是 Play Services 和 Support v4。没上 Dagger依赖注入靠手写。没上 RxJava异步靠常规回调。这种刻意的省略让项目代码读起来门槛低看架构本身不被框架魔法遮住。3、 跑起来需要什么minSdk 17compileSdk 24。算比较老的版本配置但项目本身是 2016 年的展示品后续没再激进更新。想本地跑得申请 Marvel API 的 publicKey 和 privateKey塞到 gradle.properties 里。CI 跑的话Travis 配置里需要 IS_CI_JOB、CI_PUBLIC_KEY、CI_PRIVATE_KEY 三个环境变量。Marvel API 的密钥申请页面对外开放注册账号就能拿到。Play Store 上有打包好的版本可以直接装搜 com.joaquimley.avenging。懒得跑构建可以直接体验。4、 谁会看这个项目学 Android 架构的人。准备从 View-Model 迁到 MVP 的人。被 Dagger 编译时间折磨、想看看不上 Dagger 的项目长什么样的人。教 Android 课、需要课堂示例的人。Avenging 不是生产级框架271 个 Star 也不是热门项目。它的价值在代表性一个能把 MVP 讲清楚、又不被其他框架噪声盖住的最小样本。读源码不会陷进 RxJava 的操作符链里也不会被 Dagger 的 Component 和 Module 绕晕。架构本身没多少花样能讲清楚地展现出来就够了。mponent 和 Module 绕晕。架构本身没多少花样能讲清楚地展现出来就够了。