首先是一个 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 来处理业务逻辑…………