在我当前的项目中,我使用下一行:
mViewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
例如,ViewModel
,但在https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders.html#ViewModelProviders()建议使用ViewModelProvider.AndroidViewModelFactory
,因为ViewModelProviders()
在API级别1.1.0中被弃用。
为此目的的任何想法?
ViewModelProviders
只是一个带有静态方法的实用程序类,不需要实例化它(无论如何都没有实例方法),因此不应该关注被弃用的构造函数。
你使用它的方法是为你的用例调用它适当的of
方法,传入Fragment
或Activity
,然后在它返回的get
上调用ViewModelProvider
:
val viewModel = ViewModelProviders.of(thisFragment).get(MyViewModel::class.java)
如果您没有在of
方法的第二个参数中提供自己的工厂,则默认情况下将使用AndroidViewModelFactory
。此实现可以创建没有构造函数参数的ViewModel子类,也可以创建扩展AndroidViewModel
的子类,如下所示:
class MyViewModel(application: Application) : AndroidViewModel(application) {
// use application
}