在项目中使用ViewModel组件需要在app/build.gradle文件中添加依赖
dependencies {
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
}
从良好的编程规范来说,需要为每一个Activity和Fragment都创建一个对应的ViewModel。
创建ViewModel实例需要用到ViewModelProvider,ViewModelProvider(Activity或Fragment实例).get(ViewModel::class.java)
,之所以使用ViewModelProvider来获取ViewModel实例,而不是直接在Activity创建是因为ViewModel的生命周期与Activity的生命周期是不同的,ViewModel有其独立的生命周期。
当需要向ViewModel传递参数时,需要用到ViewModelProvider.Factory。要新创建一个对应的ViewModelFactory类并实现ViewModelProvider.Factory接口并实现其中的create()方法,然后在ViewModelFactory类构造函数中接收需要传递给ViewModel的参数,然后在创建ViewModel实例时进行传递,ViewModelProvider(Activity或Fragment实例,ViewModelFactory(传递的参数)).get(ViewModel::class.java)
。