迫于失业在家,想着把之前工作上零零碎碎的知识整理下,想来想去又不知道从何下手。准备把之前自己写的两个应用重构下,毕竟好久没动了。新建工程的时候想起来之前在公司的时候维护了一个 BaseProject。
有段时间经常要调研各种库或者新技术,还有时不时让我给建个工程(那些工程好像都没下文了。。)。每次 new project 太麻烦了,于是将我手头上现有的项目整理了一下,精简出个通用的基础工程,每次有需要直接新建个分支(本地分支)。由于已经离职,拿不到原来的那份了。
因为之前的项目中很多基础代码就我在维护,所以写起来和原来差不了太多。不过写之前看了下文档,有几处别扭的地方意外解决了(^▽^)
这个工程可以直接下载下来,改个包名开始新做项目。代码结构保持了以前做项目的风格( hmmm,因为每次项目开始提交很多基础功能的原因,所以很多地方都是我的风格)
主要有三个
代码要做好分类,页面的在 ui 包,viewModel 在 viewmodel 包,也可以自己定个规则,反正不能乱
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 的话也可以在这里传。
用 retrofit + 协程的方式来发网络请求,写的比较粗糙,但也能用了。后面会慢慢改
就酱~
1
maninfog 2020-03-04 00:08:09 +08:00 via iPhone 1
已 star
|
2
winterbells OP @maninfog 感谢
QAQ 都没其他人看 |
3
Lin0936 2020-03-04 08:58:11 +08:00 1
已 Star
|
4
winterbells OP @Lin0936 要是能提点意见就好了🤣
虽说很多项目都用类似的架构,但最多就两个人会碰这块代码,有点闭门造车的感觉了⊙﹏⊙ 就好像 viewmodel 可以用 by viewmodels 这个代理方法懒加载,我也是最近看文档才知道的。。。 |