gpt4 book ai didi

android - 如何在Android的MVVM架构中将 Action 从View发送到ViewModel

转载 作者:行者123 更新时间:2023-12-03 11:01:59 26 4
gpt4 key购买 nike

hell !
我正在努力提高自己的Android体系结构技能。我发现这个article表示在 View 中调用viewModels函数是一种不好的做法。

例如,以这种方式调用函数是不好的做法。

override fun onClick(v: View?) {
if (v == vk_login) {
loginViewModel.onVKLoginClick()
}
}

我了解如何使用LiveData将数据和 Action 从ViewModel传输到View。为此,我们在 View 中初始化LiveData。但是我找不到任何信息如何从 View 中使用LiveData(或类似方式)发送用户操作信息。

我应该在 View 中初始化LiveData并为其订阅 View 模型(听起来很奇怪)。

还是像这样使用smth更好:
loginViewModel.nameFromUser.value = "some name from text view"

或者我发现的文章是错误的并且可以从 View 中调用viewModels函数,可以吗?

最佳答案

ViewModel绝对不要包含对Android框架的引用,更不要说 View 了,否则会导致内存泄漏。最好像这样使用loginViewModel.nameFromUser.value = "some name from text view"

DEMO

Source - ViewModel Patterns/Anti Patterns

View 可以观察实时数据,但是ViewModel无法观察 View ,因为 View 不会发出LiveData对象。

从文档引用:

Caution: A ViewModel must never reference a view, Lifecycle, or any class that may hold a reference to the activity context. ViewModel objects are designed to outlive specific instantiations of views or LifecycleOwners

关于android - 如何在Android的MVVM架构中将 Action 从View发送到ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57081646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com