重学安卓:是 难得一见 的 Jetpack MVVM 最佳实践!

2019-11-05 10:15:18 +08:00
 KunMinX

很高兴见到你!

上周我在 各大技术社区 发表了一篇 《 Jetpack MVVM 精讲》,原以为在 知识网红 唱衰安卓 的 2019 会无人问津,没想到文章一经发布,从 国内知名公司 的架构师、技术经理,到 世界级公司 的 Android 开发 都在看。😉

并且从读者的反馈来看,近期大部分安卓开发 已跳出舒适圈,开始尝试认识和应用 Jetpack MVVM 到实际的项目开发中。

只可惜,关于 Jetpack MVVM,网上多是 东拼西凑、人云亦云、通篇贴代码 的文章,这不仅不能提供完整的视角 来帮助读者 首先明确背景状况,更是给还没入门 Jetpack 的读者 徒添困扰、起到 劝退 的作用。

好消息是,这一期,我们带着 精心打磨的 Jetpack MVVM 最佳实践案例 来了!

| PureMusic | LiveData Dispatch | PlayMode Switch | | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | | | | ![playmode.gif]() |

本人拥有 3 年的 移动端架构 践行和设计经验,领导团队重构的 中大型项目 多达十数个,对 Jetpack MVVM 架构在 确立规范化、标准化 开发模式 以 减少不可预期的错误 所作的努力,有着深入的理解。

在这个案例中,我将为你展示,Jetpack MVVM 是如何 蕴繁于简 地 将原本十分容易出错、一出错就会耽搁半天时间的开发工作,通过 寥寥的几行代码 轻而易举地完成。😉

https://github.com/KunMinX/Jetpack-MVVM-Best-Practice

14172 次点击
所在节点    Android
25 条回复
laibin2
2019-11-05 10:59:11 +08:00
看过,影响深刻
kile
2019-11-05 11:08:17 +08:00
绝不使用 dagger 挺有意思的...

有这个说明是以前是很久前就喜欢尝新的老江湖了...
KunMinX
2019-11-05 11:08:18 +08:00
@laibin2 感谢你的阅读 😉
shiguiyou
2019-11-05 11:41:04 +08:00
感谢分享,最近也在啃官网的 jetpack 相关架构组件
aabbcc112233
2019-11-05 12:48:57 +08:00
感谢,这几天正好在看这个
starerlloll
2019-11-05 13:08:20 +08:00
jetpack 最大的问题个人感觉不是用法,而是只适合符合 material design 的 app. 一旦设计师发散下思维就很蛋疼了。。
charlieputon
2019-11-05 13:11:30 +08:00
@starerlloll 感觉你并没有理解 jetpack,建议多看看官方文档
hhhsuan
2019-11-05 13:14:07 +08:00
写的有点难懂啊,比如“状态托管 和 状态管理的分治” ,这都啥意思啊。
starerlloll
2019-11-05 13:25:34 +08:00
@charlieputon 大佬,说说你的理解?
Kmmoonlight
2019-11-05 13:32:08 +08:00
所以我该怎么看关于这个项目的文档介绍,而不是让我看源码呢
starerlloll
2019-11-05 13:46:00 +08:00
@Kmmoonlight 这时候就要你花 99 你去订阅他的专栏了
closedevice
2019-11-05 14:15:12 +08:00
@starerlloll 哈哈哈......你懂得太多了
charlieputon
2019-11-05 15:21:43 +08:00
@starerlloll jetpack 是为了规范和方便安卓开发而提供的一些组件,md 是 ui 设计的规范,完全是两码事鸭
ilotuo
2019-11-05 15:46:24 +08:00
呃虽然你说 "将 标准化开发模式的 深度思考知识 和 实战反思经验 无保留地分享" 我还是看得檬茶茶.
我觉得看 Google 那个 Todo MVVM 版示例源码就挺好. 主要就 ObservableField 的应用嘛.
Kmmoonlight
2019-11-05 16:34:43 +08:00
@starerlloll 哦 这样的嘛 但是我看他的专栏 好像试看部分也没讲这个项目
bydgg
2019-11-05 16:44:21 +08:00
不用 kotlin 是为了接地气吗
KunMinX
2019-11-05 17:16:02 +08:00
@Kmmoonlight

你好,本专栏 专为 两年以上工作经验、已熟练掌握 深度思考能力、乃至于适合 通过订阅来换时间的读者。

专栏目前已经为 130 位读者过了一遍 视图控制器 和 标准化开发模式 的知识点。

标准化开发模式 是在软件工程的背景下,为解决 视图控制器 在 数据交互过程中存在各种一致性问题而存在的。

因此,在了解 标准化开发模式 之前,需要彻底了解 视图控制器 的 生命周期、重建机制、状态管理、路由导航、页面通信 等知识点,这样才有机会理解 为什么会存在 Lifecyler、LiveData、ViewModel、DataBinding、Navigation,这些 架构组件、它们的存在究竟是为了解决什么问题,它们各自的职责边界分别是哪里到哪里。

此外,我的专栏不止于技术,每一篇都经过深度思考,确保能够讲明白状况,并且必要的时候(像讲视图这一块),还会以 难得一见的方式 结合 交互设计知识 来讲解。

以下是来自 近期热心读者的评价:

https://i.loli.net/2019/11/05/6ZfKnjtSOaCu8lP.png
https://i.loli.net/2019/11/05/YkomxlVKUQfSqWA.png
https://i.loli.net/2019/11/05/PyD8EM3RBzwiTdq.png
https://i.loli.net/2019/11/05/7wKbjBqyDSLopGa.png
KunMinX
2019-11-05 17:19:26 +08:00
@bydgg 是的。一方面,Java 作为一门标准化语言,为大众所熟知,另一方面,Java 在软件工程中存在诸多 诸如 一致性问题 的安全性隐患,因而,以 Java 为标准来讲解,能够降低人们明白状况的成本。

与此同时,kotlin 是一门支持良好封装的语言,在后续,我们会介绍这门语言,以及基于这门语言而存在的实用技术。
KunMinX
2019-11-06 11:17:40 +08:00
刚刚有读者不吝对专栏文章发出由衷的赞美,很高兴我的深度思考知识 能帮助读者解除 认知上的困扰 😉

https://i.loli.net/2019/11/06/1bdnoDkuKqAmBSx.png
locoz
2019-11-06 15:38:03 +08:00
事实证明,不标题党、不涉及贩卖焦虑并没有利用前两者赚钱的文章更受技术人员喜爱...
我还记得上次楼主发的一篇文章,就因为标题看起来比较营销、简介列了个工资占比,底下评论就出现了一堆喷子

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

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

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

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

© 2021 V2EX