gpt4 book ai didi

android - 具有自定义 View 的 MVVM 架构

转载 作者:行者123 更新时间:2023-12-03 22:04:49 58 4
gpt4 key购买 nike

我想用 MVVM 架构在 android 中创建一个自定义 View 。首先,我想问一下,ViewModel 是否可以完美地与自定义 View 一起工作,因为它可以在 Activity 或 fragment 的情况下工作?我们可以在自定义 View 中从 ViewModel 提供者获取 ViewModel 吗?

如果我需要制作单独的自定义 View ,正确的方法是什么?

最佳答案

更好的选择是使用新的 API view.findViewTreeViewModelStoreOwner()它为您提供 viewModelStoreOwner(如果 View 附加到 fragment o/w Activity ,则为 fragment )
您可以创建 ViewModelProvider,然后获取 ViewModel。
以下是 Kotlin 中的代码示例

private val viewModel by lazy(LazyThreadSafetyMode.NONE) {
ViewModelProvider(viewModelStoreOwner).get(ViewModel::class.java)
}
同样,还有其他类似的 API,如 view.findViewTreeLifecycleOwner()view.findViewTreeSavedStateRegistryOwner()这是一种更简洁的方法,因为您不必对 context 进行类型转换。进入 ActivityFragment并将扩展到 ViewModelStoreOwner 的其他实现也是。
这里要注意的一点是,与 Activity/Fragment 相比, View 的生命周期可能更短,因此您可能必须使用 LifecycleRegistry 制作自定义 View 生命周期(以便正确管理您的 LiveData 订阅)基于 onAttachedToWindowonDetachedFromWindow回调

关于android - 具有自定义 View 的 MVVM 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57790283/

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