Android-MVVM之快速上手ViewModel
- 什么是ViewModel?
- ViewModel生命周期?
- ViewModel的使用?
什么是ViewModel?
简单来说,就是让view层(视图层)与model层(数据层)分离开来的桥梁。让view层展示ui,不持有数据。
ViewModel生命周期?
- 首先能体现的是在activity重建的时候(屏幕旋转),数据不会被销毁。
- 其次是ViewModel的生命周期会比创建它的Activity、Fragment的生命周期都要长。即ViewModel中的数据会一直存活在Activity/Fragment中。当activity 销毁的时候,执行onCleared()方法。
ViewModel的使用?
val mainViewModel = ViewModelProvider(this).get(MyViewModel::class.java)
常用的用法是与LiveData(下节介绍)一起使用
// kotlin
class MyViewModel : ViewModel() {
private val users: MutableLiveData<List<User>> by lazy {
MutableLiveData<List<User>>().also {
loadUsers()
}
}
fun getUsers(): LiveData<List<User>> {
return users
}
private fun loadUsers() {
// Do an asynchronous operation to fetch users.
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val mainViewModel = ViewModelProvider(this).get(MyViewModel::class.java)
mainViewModel.getUsers()
}
}