一个 MVVM Base Project

2020-03-03 23:58:04 +08:00
 winterbells

点此到达 -> MVVMBaseProject

前言

迫于失业在家,想着把之前工作上零零碎碎的知识整理下,想来想去又不知道从何下手。准备把之前自己写的两个应用重构下,毕竟好久没动了。新建工程的时候想起来之前在公司的时候维护了一个 BaseProject。

有段时间经常要调研各种库或者新技术,还有时不时让我给建个工程(那些工程好像都没下文了。。)。每次 new project 太麻烦了,于是将我手头上现有的项目整理了一下,精简出个通用的基础工程,每次有需要直接新建个分支(本地分支)。由于已经离职,拿不到原来的那份了。

因为之前的项目中很多基础代码就我在维护,所以写起来和原来差不了太多。不过写之前看了下文档,有几处别扭的地方意外解决了(^▽^)

说明

这个工程可以直接下载下来,改个包名开始新做项目。代码结构保持了以前做项目的风格( hmmm,因为每次项目开始提交很多基础功能的原因,所以很多地方都是我的风格)

模块

主要有三个

app

代码要做好分类,页面的在 ui 包,viewModel 在 viewmodel 包,也可以自己定个规则,反正不能乱

lib

lib/extension 这里面放着的都是 kotlin 扩展方法,Activity、Fragment 等直接用的

lib/MVVM 所有的 Activity 和 Fragment 页面都用 DataBinding (龟腚,当然你自己也可以改) BaseActivity、BaseFragment 没有其它好讲的。 需要 Butterknife 绑定的话在 onCreate() 或者 onCreateView() 中加一下就 OK 了

主要是 BaseViewModel 和 ViewModelFactory BaseViewModel 实现 LifecycleObserver,在 ViewModelFactory 中,绑定 ViewModel 时将生命周期传过去。这时 ViewModel 就能自动执行 onCreate() 了。如果有 extras 或者 arguments 的话也可以在这里传。

network

用 retrofit + 协程的方式来发网络请求,写的比较粗糙,但也能用了。后面会慢慢改

就酱~

8538 次点击
所在节点    Android
4 条回复
maninfog
2020-03-04 00:08:09 +08:00
已 star
winterbells
2020-03-04 08:35:19 +08:00
@maninfog 感谢
QAQ 都没其他人看
Lin0936
2020-03-04 08:58:11 +08:00
已 Star
winterbells
2020-03-04 09:04:52 +08:00
@Lin0936 要是能提点意见就好了🤣

虽说很多项目都用类似的架构,但最多就两个人会碰这块代码,有点闭门造车的感觉了⊙﹏⊙

就好像 viewmodel 可以用 by viewmodels 这个代理方法懒加载,我也是最近看文档才知道的。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/649609

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX