2020 年了, Android MVVM 应该怎么写

2020-08-17 15:48:04 +08:00
 devfeng

项目里一直用的 MVP,最近出去面试,很多面试官问了 MVVM 相关问题,看来很多公司已经开始用上了 MVVM ?于是周末看了一下 MVVM,上来 DataBinding,ViewModel,LiveData 一套给我搞晕了,又害怕 Jetpack 这一套不是国内互联网的主流方案,所以来 V 站请教一下大佬们,Android MVVM 的主流方案,或者能丢给我几个开源项目学习一下,感激不尽!

7745 次点击
所在节点    Android
21 条回复
0DBBFF
2020-08-17 15:58:11 +08:00
windplume
2020-08-17 17:10:31 +08:00
B 站搜索 longway777
coolmint
2020-08-17 17:12:15 +08:00
有个专栏叫重学安卓,可以订阅一个看看,里面不少干货,现在小团队开发新产品用 jetpack 这一套挺快的,面试也是重要知识点,确实可以好好看看。
wobuhuicode
2020-08-17 17:19:14 +08:00
flutter ……
感觉原生安卓的 MVVM 搞出来单纯就为了 KPI,内置的 API 经过这几年的布局 MVP 已经很成熟了。新 API 能没坑?
毕竟都是新 API,还不如直接用 flutter 算了。踩坑不如踩一个成熟点的
rebounce
2020-08-17 17:24:53 +08:00
@wobuhuicode MVVM 很成熟也能解决很多问题,Flutter 才是那个可能有坑的。跨平台就其源头就不会做大,举个例子,Flutter 一旦做大到影响 iOS 原来的开发生态,就会被苹果拒之门外。
xiaoliu926
2020-08-17 17:30:56 +08:00
azhangbing
2020-08-17 17:58:23 +08:00
我一直在想有没有必要搞这么复杂
hongch
2020-08-17 18:17:24 +08:00
1.到底项目多大才需要 mvvm
2.上 mvvm 的目的是啥?单纯为了架构而架构?
3.别人在用不一定适合当前项目
4.livedata 的 demo,google 官方不是有吗
xuanbg
2020-08-17 19:04:42 +08:00
MVVM 已经被实践证明是一种优秀的设计模式。能很好地将 UI 、交互逻辑、业务逻辑和数据解耦。MVVM 模式的运用,无非就是把代码分门别类写对地方而已,实际上也是封装思想的一种体现。
zhuangzhuang1988
2020-08-17 20:45:07 +08:00
要不看看 xamarin 的 mvvm??
Xusually
2020-08-17 23:54:54 +08:00
MVVM 反而新手友好。。。老手看不上也正常
手动狗头.gif
Habsburg
2020-08-18 00:12:48 +08:00
你不会看 github 的吗
WebKit
2020-08-18 09:30:35 +08:00
@wobuhuicode #4 flutter 现在坑还是太多,复杂页面也有点卡。。
WebKit
2020-08-18 09:32:10 +08:00
MVVM 一般只用 ViewModel,LiveData,DataBinding 刚出来那阵用了一段时间,就放弃了。编译起来坑太多,还不能复用 layout
gam2046
2020-08-18 09:53:28 +08:00
大多数场景下,个人感觉自带的数据绑定就足够了,还避免了很多 NPE 的坑。但我没有写过很大型的 Android 应用
devfeng
2020-08-18 10:35:09 +08:00
@WebKit 是的,我觉得 DataBinding 污染 xml 不太好,LiveData+ViewModel 已经可以很好工作了
krystal9527
2020-08-18 14:08:06 +08:00
@devfeng 可以看看 ViewBinding,是 DataBinding 功能弱化版本
fansangg
2020-08-18 16:27:53 +08:00
@devfeng databinding 那么香,居然被你说成污染 xml...
fansangg
2020-08-18 16:30:05 +08:00
建议了解一下 bindadapter
lvdb
2020-08-20 13:26:22 +08:00
2020 年了,任何新的安卓项目,无论什么复杂程度,我觉得都该用 mvvm+jetpack 。btw 我现在这个公司,还在用敲厉害的 mvc,封装的敲完美,代码看起来敲赏心悦目。

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

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

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

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

© 2021 V2EX