lwlizhe
V2EX  ›  问与答

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

By lwlizhe at 2020 年 12 月 10 日 · 1000 次点击
首先是一个 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 来处理业务逻辑…………
目前尚无回复
© 2026 V2EX · 23ms · 3.9.8.5