티스토리 뷰

Develop/Android

[Android] ViewModel(AAC)

노이지 2021. 9. 11. 13:38
반응형

MVVM 패턴의 ViewModel과 AAC의 ViewModel이 어떻게 다른지 알아보자.

 

1. MVVM 패턴의 ViewModel

Model, View, ViewModel로 이루어진 MVVM 패턴에서 View에 연결할 데이터와 명령으로 구성되어 있으며 변경 알림을 통해 View에게 상태 변화를 전달하는 역할을 한다. ViewModel은 Model은 알지만 View는 알지 못한다. 이 ViewModel을 구현하는데 AAC의 ViewModel이 사용하는 것이 좋다.

 

2. AAC의 ViewModel

ViewModel은 액티비티를 재생성할 때 UI 관련 데이터를 유지하기 위해 사용한다. ViewModel 클래스를 사용하면 화면 회전과 같이 구성을 변경할 때도 데이터를 유지할 수 있다. 액티비티가 완전히 종료될 때까지, 프로그먼트가 분리될 때까지 메모리에 남아있도록 설계되어 있다.

viewmodel 생명주기

ViewModel 객체의 범위는 ViewModelProvider에 전달되는 Lifecycle로 결정된다. ViewModel은 이 lifecycle이 끝날 때까지 메모리에 남아있게 되며 해당 lifecycle이 finished 상태가 되면 LifecycleEventObserver를 통해 onCleared() 콜백 메서드를 호출하고 종료하게 된다.

 

또한 ViewModel은 repository를 통해 데이터를 가져온다. Repository는 ViewModel과 데이터를 주고받기 위해 데이터 API를 포함하는 클래스이다. 싱클톤 패턴으로 뷰모델마다 동일한 repository로 접근하며 사용자 동작에 따라 필요한 데이터를 가져오록 도와준다. Repository의 존재 덕분에 ViewModel이 데이터를 관리하지 않아도 된다.

 

참고

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함