MVVM
구조에 익숙해지기 위해 구글에서 만든 BasicSample
을 분석해보자. 이 예제는 제품 목록과 제품 리뷰를 표시하는 두 개의 화면이 있다.
Presentation Layer
와 Data Layer
로 구성
프레젠테이션 계층을 아래와 같은 구성 요소로 구성된다.
Navigation
을 처리하는 Activity
가 존재한다.Fragment
).Fragment
).<aside>
💡 앱은 ***프레젠테이션 계층(UI 계층)***에 대해 MVVM
아키텍처를 사용하며, 각 fragment
는 view
에 해당한다.
</aside>
View
와 ViewModel
설계 원칙ViewModel
은 activity
, fragment
와 같은 Android View에 대한 참조가 없다.ViewModel
은 전체 수명 주기 동안 유지되기 때문에 화면 회전과 같은 구성 변경 시 메모리 누수가 발생할 수 있다.
ViewModel
은 LiveData
를 사용하여 데이터를 노출한다.
LiveData
를 사용하면 앱의 여러 구성 요소 간에 명시적이고 종속성을 만들지 않고도 데이터의 변경 사항을 관찰할 수 있다.fragment
를 포함한 view
는 LiveData
를 구독(observe)한다.
LiveData
는 수명 주기를 인식하므로 관찰자가 활성 상태가 아닌 경우, 기본 데이터에 변경 사항을 알리지 않는다.