V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
devfeng
V2EX  ›  Android

2020 年了, Android MVVM 应该怎么写

  •  
  •   devfeng · Aug 17, 2020 · 16086 views
    This topic created in 2080 days ago, the information mentioned may be changed or developed.

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

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