ViewModel就是将View中的数据独立出来,对View的数据进行单独的管理,从而使控制器(Activity | | Fragment)变得更加简单,Activity和Fragment只需要专注于控制界面的逻辑以及响应用户的操作就可以,而不需要管理界面上复杂的数据。 ViewModel中的数据贯穿了整个生命周期,所以使用ViewModel管理的数据不会丢失(屏幕旋转或者语言切换)。当与LiveData配合时会非常实用,可以添加对数据的监听。当监测到数据变化时,页面自动刷新。
ViewModel的使用
// 继承ViewModel类
class MyViewModel:ViewModel() {
var stop = true
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 创建ViewModel实例
val myViewModel = ViewModelProvider(this,ViewModelProvider.NewInstanceFactory()).get(MyViewModel::class.java)
myViewModel.stop = false
}
}