美文网首页
Kotlin-创建viewModel的不同方式

Kotlin-创建viewModel的不同方式

作者: Simple_Code | 来源:发表于2024-10-22 17:34 被阅读0次

1.使用ViewModelProvider

val myViewModel1 = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(MyViewModel::class.java)
val myViewModel2 = ViewModelProvider.AndroidViewModelFactory(this.application).create(MyViewModel::class.java)
val myViewModel3 = ViewModelProvider(this).get(MyViewModel::class.java)

2.使用ViewModelProviders

val myViewModel4 = ViewModelProviders.of(this).get(MyViewModel::class.java)

3.使用Kotlin的by viewModels() 代理,这要求你的Activity或Fragment是FragmentActivity或Fragment,并且你的宿主必须是ViewModelStoreOwner

val myViewModel5: MyViewModel by viewModels()
val myViewModel6 by viewModels<MyViewModel>()

4.使用Kotlin的by viewModels() 代理并指定ViewModel的工厂方法:

val viewModel: MyViewModel by viewModels { myFactory }

在以上的代码中,MyViewModel是你自定义的ViewModel类,this通常指Activity或Fragment实例,myFactory是你自定义的ViewModelProvider.Factory(如果你需要自定义实例化逻辑)。

by viewModels() 是一个Kotlin语言特性,它使得在Activity或Fragment的生命周期内,只要Activity或Fragment不被销毁,那么ViewModel实例将会一直被复用,不需要像ViewModelProviders那样每次Activity或Fragment重建时都会创建一个新的ViewModel实例。

相关文章

网友评论

      本文标题:Kotlin-创建viewModel的不同方式

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