ViewModel就是将View中的数据独立出来,对View的数据进行单独的管理,从而使控制器(Activity | | Fragment)变得更加简单,Activity和Fragment只需要专注于控制界面的逻辑以及响应用户的操作就可以,而不需要管理界面上复杂的数据。 ViewModel中的数据贯穿了整个生命周期,所以使用ViewModel管理的数据不会丢失(屏幕旋转或者语言切换)。当与LiveData配合时会非常实用,可以添加对数据的监听。当监测到数据变化时,页面自动刷新。

ViewModel的使用

  1. // 继承ViewModel类
  2. class MyViewModel:ViewModel() {
  3. var stop = true
  4. }
  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. // 创建ViewModel实例
  6. val myViewModel = ViewModelProvider(this,ViewModelProvider.NewInstanceFactory()).get(MyViewModel::class.java)
  7. myViewModel.stop = false
  8. }
  9. }