Android 创建视图模型的方式有什么不同?
我已经在我的项目中使用viewModel了。但ıknowı可以通过多种方式初始化viewmodel。你知道这些方法有什么不同吗Android 创建视图模型的方式有什么不同?,android,android-studio,kotlin,mvvm,dependency-injection,Android,Android Studio,Kotlin,Mvvm,Dependency Injection,我已经在我的项目中使用viewModel了。但ıknowı可以通过多种方式初始化viewmodel。你知道这些方法有什么不同吗 viewModel=ViewModelProvider(this).get(ViewModelClass::class.java) viewModel=ViewModelClass() viewModel:ViewModelClass:by viewModels() viewModel:ViewModelClass by ViewModelse{ ViewModelF
- viewModel=ViewModelProvider(this).get(ViewModelClass::class.java)
- viewModel=ViewModelClass()
- viewModel:ViewModelClass:by viewModels()
- viewModel:ViewModelClass by ViewModelse{ ViewModelFactory(此,repository(),意图 }
您正在创建一个作用域到此片段/活动的viewModel=ViewModelProvider(this.get)(ViewModelClass::class.java)
实例,并且每当重新创建该活动时,都会分配相同的viewModel实例,而不是新实例ViewModelClass
尽管它似乎是正确的,但事实并非如此。每当重新创建活动时,都会分配新的viewModel实例。不要尝试通过直接调用其构造函数来创建viewModel实例,而是让viewModel=ViewModelClass()
来完成这项工作ViewModelProvider
感谢您创建了viewModel。它类似于viewModel:viewmodelsclass by viewModels()
viewModel:ViewModelClass by ViewModels{ViewModelFactory(this,repository(),intent)}
val viewModel by lazy{
ViewModelProvider(this).get(MyViewModel::class.java)
}
val viewModel by lazy {
ViewModelProvider(this, ViewModelFactory(this,Reposityory(),intent)).get(MyViewModel::class.java)
}