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

2020-12-10 16:44:46 +08:00
 lwlizhe
首先是一个 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 中处理每个逻辑单元。
( <amp-youtube data-videoid="Ts-uxYiBEQ8" layout="responsive" width="480" height="270"></amp-youtube>?t=503 )

然而我个人觉得持有多个 ViewModel 的方案不仅便捷,而且完全不违反 MVVM 的理念,按照功能职责来划分,也是单一可信来源;更何况……谷歌官方的文档其实还是有待商榷的,比如说他们在推荐应用架构中明确建议 ViewModel 来处理业务逻辑…………
396 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/734184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX