[안드로이드] jetpack Compose와 ViewModel 사이의 MVVM

말랑돌·2025년 7월 5일

안드로이드 학습

목록 보기
9/17
post-thumbnail

MVVM 이란?

  • 간단하게 말해서 UI를 표기하는 컴포저블이랑, 상태(State)를 관리하는 변수들을 분리하는 것을 말한다.
  • 각 컴포저블 함수와 ViewModel는 각각 이벤트(Event)와 상태(State)를 단방향 전달한다.
  • 위처럼 따로 분리를 하면 각 컴포저블 함수와 ViewModel의 재사용성이 증가한다.


현재 나에게 익숙한 MVVM 방식은 다음과 같다.

  • ViewModel을 상속받은 class 를 만들고, 그 안에 MutableStateFlow 변수를 만든다.
    • 여기서 만든 변수는 privite으로 지정하고, _a 식으로 만든다. a식으로 만든 변수를 초기화 하여 getter 처럼 사용한다. setter는 따로 만든다
      • private val _uiState = MutableStateFlow(GameUiState())
      • val uiState: StateFlow = _uiState.asStateFlow()
  • Compose UI 함수의 매개변수에 ViewModel 을 첨가하고,
    • val gameUiState by gameViewModel.uiState.collectAsState() 처럼 상태를 불러온다.
    • 이벤트를 ViewModel에서 처리하려한다면, Compose 함수의 매개변수에 () -> Unit 함수를 추가하고, 상위에서 람다함수에 ViewModel 내부의 function을 호출하여 이벤트를 처리한다.


참고(주로 5~6 부분)

https://developer.android.com/codelabs/basic-android-kotlin-compose-viewmodel-and-state?hl=ko#0

https://velog.io/@minchae75/Android-Kotlin-Jetpack-Compose-6

0개의 댓글