[Android] MVVM이란?

minnie·2022년 1월 6일
0

Jetpack

목록 보기
6/13
post-thumbnail

1. MVVM이란?


📍 ViewModel

ViewModel은 View와 Model 사이의 매개체 역할을 한다. Model에서 가져온 데이터를 UI에 필요한 정보로 가공하고 View가 가져갈 수 있도록 해당 데이터 변경에 대한 notify를 보낸다.
ViewModel과 View은 1:다 관계를 가질 수 있다. 즉, 하나의 ViewModel을 여러개의 View에 사용할 수 있다.
ViewModel은 View의 Context에 대한 레퍼런스를 가지면 안된다.
👉View는 ViewModel의 레퍼런스를 가지지만, ViewModel은 View에 대한 정보가 전혀 없어야 한다. 만약 ViewModel이 View의 레퍼런스를 가진다면, Lifecycle에 메모리 누수가 발생할 수 있다. ViewModel이 destroy() 이외의 라이프사이클에서는 메모리에서 해제되지 않기 때문이다.

📍 View

Activity, Fragment, CustomView, Dialog 등의 UI 컴포넌트이다.
View는 UI 업데이트를 위해 ViewModel과 바인딩하게 된다. View가 ViewModel에 구독을 하게 되고, ViewModel의 상태가 변경되면 그 이벤트를 받아 UI를 갱신한다.

📍 Model

Network, DB, SharedPreferences 등 다양한 Data Source 로부터 필요한 데이터를 준비한다.
ViewModel에서 데이터를 가져갈 수 있게 데이터를 준비하고, 그에 대한 이벤트를 보낸다.


2. 동작 과정

MVVM은 아래와 같은 형태로 동작하게 된다.

  1. 사용자의 Action이 View를 통해 들어옴
  2. View에 Action이 들어오면, ViewModel에 Action을 전달
  3. ViewModel은 Model에게 데이터 요청
  4. Model은 ViewModel에게 요청받은 데이터를 응답
  5. ViewModel은 응답 받은 데이터를 가공하여 저장
  6. View는 ViewModel과 DataBinding하여 화면을 나타냄

👉NEXT
MVVM패턴을 사용하여 위와 같이 동작하는지 확인

profile
Android Developer

0개의 댓글