ViewModel是Jetpack中最重要的組件之一了,重要的作用是可以幫助Activity分擔(dān)一部分工作,它是專門用于存放與界面相關(guān)的數(shù)據(jù)。另外,當(dāng)手機(jī)橫豎屏切換時(shí),activity會被重新創(chuàng)建,同時(shí)存放在activity中的數(shù)據(jù)也會丟失,而ViewModel的生命周期和Activity不同,它可以保證手機(jī)在橫豎屏切換時(shí)不會被重新創(chuàng)建,只有當(dāng)activity退出時(shí),才會跟著activity一起銷毀。
一、viewModel的基本用法:
class MyViewModel:ViewModel() {
}
此外,不可以直接去創(chuàng)建ViewModel的實(shí)例,而是通過ViewModelProvider來獲取ViewModel的實(shí)例。具體代碼如下:
viewModel=ViewModelProvider(this).get(MyViewModel::class.java)
二、向viewModel傳遞參數(shù)
這需要借助viewmodelprovider.Factory實(shí)現(xiàn)
viewModel代碼
class MyViewModel(count:Int):ViewModel() {
var counter=count
}
MainViewModelFactory類實(shí)現(xiàn)ViewModelProvider.Factory接口,該接口必須create()方法,
class MainViewModelFactory(private val countResered:Int):ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return MyViewModel(countResered) as T
}
}