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 공식 사이트