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