迫于失业在家,想着把之前工作上零零碎碎的知识整理下,想来想去又不知道从何下手。准备把之前自己写的两个应用重构下,毕竟好久没动了。新建工程的时候想起来之前在公司的时候维护了一个 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 + 协程的方式来发网络请求,写的比较粗糙,但也能用了。后面会慢慢改
就酱~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.