Android/Android
[Android] ViewModel
Cha_Ji
2021. 9. 21. 19:09
ViewModel
viewModel은 Android Jetpack의 구성요소이며 UI 관련 데이터를 관리합니다.
MVC 패턴에서 Controller에 과도한 책임이 할당되는 문제를 어느정도 해결해줍니다.
특징
- UI 컨트롤러의 수명 주기를 관리합니다.
- 컨트롤러 로직에서 뷰 데이터 소유권을 분리하는 목적으로 사용합니다.
- 클래스를 분리하기 때문에 다른 화면에서 재사용이 가능합니다.
구현
class TempViewModel: ViewModel() {
private val temp = MutableLiveData<Item> by lazy {
MutableLiveData<Item>().also {
test()
}
}
fun getTemp(): LiveData<Item> {
return temp
}
fun test() {
}
}
class MainActivity() {
override fun onCreate() {
val model: TempViewModel by viewModels()
model.getTemp().observe(this, Observer<Item> {
}
}
}
- ViewModel 클래스를 생성해 관찰할 LiveData에 관한 함수를 작성합니다.
- Activity, Fragment에서는 by viewModels() 키워드를 사용해 선언할 수 있고, 관찰하거나 작성한 함수를 사용합니다.
참고: Android 공식 사이트