차지

[Android] ViewModel 본문

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

'Android > Android' 카테고리의 다른 글

[Android] 예외처리: runCatching  (0) 2021.10.03
[Android] View Binding  (0) 2021.10.03
[Android] Recycler View  (0) 2021.09.21
[Android] LiveData  (0) 2021.09.21
[Android] MVC 구조  (0) 2021.09.21