View model 的用途
1、將商業邏輯從 Activity 或 Fragment 中獨立出來,避免 view 過大,影響程式可讀性及可維護性。
2、view model 可以在 configuration changes 中存活,可以在畫面切換時保存變數。
依賴的函式庫
dependencies {
...
def lifecycle_version = "2.5.1"
// LiveData
implementaion "android.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// LiveData
implementaion "android.lifecycle:lifecycle-lifedata-ktx:$lifecycle_version"
}
建立 View Model
class MainViewModel : ViewModel() {
...
}
在 Activity 或 Fragment 中初始化 View Model
class MainActivity : AppCompatActivity(){
private lateinit var viewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
...
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
}
...
}
快速初始化的方法 – viewModels()
依賴
// 只能在 activity 中使用 viewModels() // implementation "androidx.activity:activity-ktx:1.6.1" // activity 與 fragment 都可使用 viewModels() implementation "androidx.fragment:fragment-ktx:1.5.5"
程式代碼
...
import androidx.activity.viewModels
class MainActivity : AppCompatActivity() {
private val viewModel: MainViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
...
}
...
}
Comments