-
Notifications
You must be signed in to change notification settings - Fork 0
About MVVM Concept
sery270 edited this page Aug 10, 2020
·
1 revision
Model에서 정의하고 ViewModel에서 처리한 데이터를 의미한다. View에서는 이 Model을 가져다 뿌리는 일 만 하게된다.
즉,
View는 보여주는 일, UI 부분만 담당하게 된다. 데이터는 가져가 뿌리기만 한다.
→ activity, fragment (UI)
Model은 View에서 보여질 데이터에 대한 정의, 틀을 담당한다.
→ data class
- 유저 인터렉션
- 라이프사이클
원래는 View의 생명 주기 메서드 안에 코드를 넣어 구현 했는데, MVVM 상에선 이 데이터 정의 및 처리 부분과 렌더링 부분의 동작이 구분되어 있다.
따라서 MVVM 에선, 각 View의 생명 주기 메서드 안에서, 적절한 ViewModel 동작을 호출하는 방식으로 구현한다.
즉,
View는 순수히 UI 적인 부분만 담당하게 된다.
ViewModel은 View로부터 호출되어, 유저 인터렉션 및 라이프 사이클과 관련된 처리를 담당하게 된다.
항상 View가 ViewModel를 호출하고, ViewModel은 호출 받았을 때, 동작한다.
ViewModel이 View를 호출하지는 않는다.
- Data Binding
Data Binding은 어떠한 Subject를 두고 다른 객체들이 이를 구독하는 방식이다. 즉, Subject가 업데이트 되면 다른 객체들이 자동으로 바뀌게 되는 형식이다. 데이터를 새로고침하기 위해 ViewModel이 View를 호출하지는 않는다!
Data Binding 구현 방법
- Android JetPack의 Data Binding
- Observer 패턴의 Data Binding
- RxJava2