V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
devfeng
V2EX  ›  Android

2020 年了, Android MVVM 应该怎么写

  •  
  •   devfeng · 2020-08-17 15:48:04 +08:00 · 12135 次点击
    这是一个创建于 1584 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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