Android:一个 ViewModel 可以用于多个 Fragments 吗?

Van*_*saF 5 android android-fragments android-viewmodel

我有一个关于 Android 应用程序架构的一般性问题。我正在实现一个应用程序(用Java),它有一个活动和20个片段(相似但不相同)。到目前为止,我在片段中实现了所有内容(UI、逻辑、数据库查询)。现在我正在考虑使用 ViewModel,但我不确定它是否值得付出努力。所以我的问题是我的 20 个片段中的每一个片段是否都应该有一个自己的 ViewModel,或者我是否可以为所有 20 个片段实现一个 ViewModel?为所有 Fragment 类实现一个 ViewModel 会大大增加工作量,所以我想知道是否可以为所有 Fragment 只使用一个 ViewModel ?

0X0*_*gar 6

ViewModel从技术上讲,为所有人提供一个是可能的Fragment

然而,由于这个对象ViewModel必须管理许多非常不同的用例,所以它就像一个神对象。如果有 20 个 Fragments,就会有很多行代码......

切换到 MVVM 通常是值得的,因为从长远来看,应用程序更容易测试和维护。

在您的应用程序中添加BaseViewModel一个类可能是一个好主意,ViewModel该类处理所有用例中类似的事情,例如让用户知道Fragment它应该显示加载指示器或错误消息。“正常”ViewModel可以扩展BaseViewModel并专注于它们的用例。

在某些情况下,共享 是有意义的ViewModel,例如,当 aFragment显示与某些 s 的对话时,或者当一个人在小型设备上EditText具有一系列 3-4 s 的工作流程时,而在较大的设备上一两个s 就足够了。FragmentFragment

以防万一,这是我最喜欢的 MVVM 应用程序架构起点:应用程序架构指南