美文网首页
获取viewModel的两种方式

获取viewModel的两种方式

作者: toExploreFuture | 来源:发表于2022-02-09 08:56 被阅读0次
private val model: MyViewModel by viewModels()

要使用这中方式,需要添加一下依赖 
implementation "androidx.fragment:fragment-ktx:1.4.1"
implementation "androidx.activity:activity-ktx:1.4.0"
private lateinit var myViewModel: MyViewModel
fun aaa(){
    myViewModel = ViewModelProvider(requireActivity(), ViewModelProvider.NewInstanceFactory()).get(MyViewModel::class.java)
}

经过测试发现第一种方式在不同的fragment 获取的model 对象的内存地址都不一样,导致多fragment 共享数据时出问题
第二种获取的 在不同的fragment 获取的数据是一样的.



ViewModelProvider(保证是同一个 ViewModelStoreOwner,就能保证获取到的viewModle是同一个, ViewModelProvider.NewInstanceFactory()).get(MyViewModel::class.java)

相关文章

网友评论

      本文标题:获取viewModel的两种方式

      本文链接:https://www.haomeiwen.com/subject/nzqwkrtx.html