V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lwlizhe
V2EX  ›  问与答

Android 开发 ,正确使用 JetPack 组件的 ViewModel 是应该遵循一个什么思路呢?

  •  
  •   lwlizhe · 2020-12-10 16:44:46 +08:00 · 396 次点击
    这是一个创建于 1299 天前的主题,其中的信息可能已经有所发展或是发生改变。
    首先是一个 View 持有 多个 ViewModel 是否是坏习惯?

    比如说,现在有两种方案:

    ( 1 ) ViewModel 的使用,是应该一个 View 对应一个 ViewModel,然后将所需数据的 LiveData 放进去;(感觉此方案,共享的单元应该是 LiveData,ViewModel 只是个载体)

    ( 2 )还是先按功能划分一下,划分为数个不同的 ViewModel,每个 ViewModel 都持有各自对应功能所需的一些 LiveData,然后 View 根据功能需要,持有多个 ViewModel (感觉这种方案,共享的单元应该是 ViewModel )


    产生此疑惑的原因是:

    按照谷歌的架构设计图,确实在 ViewModel 上只有一个,而 LiveData 就明显的画了很多个
    https://developer.android.com/jetpack/guide );

    而且 Google 的 Florina 提到每个屏幕应具有 1 个 ViewModel,并且应在单独的 LiveData 中处理每个逻辑单元。
    ?t=503 )

    然而我个人觉得持有多个 ViewModel 的方案不仅便捷,而且完全不违反 MVVM 的理念,按照功能职责来划分,也是单一可信来源;更何况……谷歌官方的文档其实还是有待商榷的,比如说他们在推荐应用架构中明确建议 ViewModel 来处理业务逻辑…………
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2148 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:11 · PVG 00:11 · LAX 09:11 · JFK 12:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.