Android 在MVVM体系结构中使用视图参数初始化实例的位置

Android 在MVVM体系结构中使用视图参数初始化实例的位置,android,mvvm,viewmodel,Android,Mvvm,Viewmodel,我致力于将我的应用程序改写为MVVM架构概念。 根据我的理解,所有业务逻辑都应该存在于ViewModel和活动或片段中的UI组件中。我使用的第三方库需要使用一些视图进行初始化,比如:MyLibrary instance=newmylibrary(“key”,imageView,surfaceView),然后对这些视图进行一些操作 知道不建议将任何Android视图传递给ViewModel,也不建议在活动中初始化SDK时,最好的位置和正确的方式是什么。反过来,ViewModel通知视图(活动和片段

我致力于将我的应用程序改写为MVVM架构概念。 根据我的理解,所有业务逻辑都应该存在于
ViewModel
活动
片段
中的UI组件中。我使用的第三方库需要使用一些视图进行初始化,比如:
MyLibrary instance=newmylibrary(“key”,imageView,surfaceView)
,然后对这些视图进行一些操作


知道不建议将任何Android视图传递给
ViewModel
,也不建议在
活动中初始化SDK
时,最好的位置和正确的方式是什么。反过来,ViewModel通知视图(活动和片段)应该更改什么,而视图只处理应该如何更新


然而,如果我们想成为nitpcky,大部分业务逻辑应该仍然保留在模型中。ViewModel只保存视图所需的LiveData。其中的一些原因是,您不希望您的模型依赖于Android架构。但也要遵循单一目的原则。这样可以避免将ViewModel变成处理一切的God对象。相反,您只允许它格式化数据、传递命令、提供绑定的工厂方法 并订阅/获取模型的相关更改

简而言之:视图将用户输入传递给ViewModel,后者在模型上发出命令。然后,ViewModel格式化来自模型的更改,并使用LiveData将更改发布到视图中。视图最终会更新用户可以看到的组件

查看此处的示例以了解UI的更新方式。

请在此处阅读有关模式的更多信息:

“是否仍应保留在模型中”?我不同意这一点。模型持久化数据,也就是说,可以与存储库连接,但是模型不应该负责业务逻辑。