JetPack이란 구글에서 제공하는 안드로이드 컴포넌트 라이브러리 모음으로 좀 더 효율적이고 질 좋은 앱을 개발하는데 많은 도움이 된다.
4가지 범주
1. Architecture
2. UI
3. Foundation
4. Behavior
AAC(Android Architecture Components)는 jetpack에서 Architecture에 해당하는 부분으로 테스트와 유지보수가 쉬운 안드로이드 앱을 디자인할 수 있도록 돕는 라이브러리 모음이다.
AAC를 활용하면 현재 구글에서 권장하는 MVVM 구조로 앱 설계가 가능해진다.
다음은 앱 아키텍쳐 가이드의 권장 구조의 도식도이다.
눈에 보이는 UI 즉, View에 해당되며 대부분이 Activity와 Fragment로 이루어져 있다. UI와 관련된 프레젠테이션 로직을 작성한다.
ViewModel에 해당되며, View가 요청한 데이터를 Model로 요청하고 받아오는 역할을 하며 이와 관련된 비즈니스 로직을 작성한다.
❗️하나의 View에 하나의 ViewModel을 사용한다.
❗️ MVVM의 ViewModel의 역할을 하기위해서 AAC에서 제공하는 ViewModel을 사용하는 것이다.
살아있는 데이터로 ViewModel에서 View에게 일관성있는 데이터를 제공하기 위해 사용한다.
Activity나 Fragment에서 이를 옵저빙해 변화를 감지해 특정 동작을 수행할 수 있다.
XML에서 ViewModel의 LiveData를 바인딩하여 관찰하고, 데이터 변화에 따른 UI 동작을 가능케한다.
ViewModel에서 요청한 데이터를 내부 데이터베이스(room)에서 불러오거나, 외부 서버가 있다면 통신(retrofit)을 통해 데이터를 불러오고 불러온 데이터를 저장하고 가공해서 ViewModel에게 전달한다.
이로써 ViewModel에서는 데이터를 저장하고 관리할 필요가 없어지게 된다.
repository에서 저장하고 있는 데이터나 통신의 DTO가 일종의 Model이라고 생각이 된다.
위에 소개한 AAC 라이브러리들을 잘 이해하고 앱에 적용한다면 MVVM 아키텍쳐 구조를 지키며 훌륭한 앱을 만들 수 있을 것이다!! 👊🏻