구글에서 권장하는 아키텍처의 원칙은 '관심사 분리''데이터 모델에서 UI 도출'이다.

Activity나 Fragment와 같은 UI 기반의 클래스는 UI 및 운영체제 상호작용을 처리하는 로직만 포함되어야 한다.
위와 같은 클래스들은 최대한 가벼운 상태로 유지하여 수명 주기와 관련된 문제들을 피하고 테스트가 쉽도록 고려되어야 한다.
또한 OS가 언제든지 사용자에 의해 메모리 부족과 같은 시스템적인 조건으로 UI클래스들을 제거할 수 있기 때문에 
로직의 성격에 따라 분리하여 UI클래스에 대한 의존성을 최소화하는 것이 좋다.

또한 UI는 데이터를 처리하는 모델에 의해 도출되어야 한다.
모델은 네트워크에 문제가 있거나 OS가 리소스를 확보하기 위해 앱을 제거해도 사용자의 데이터 또는 앱의 동작은 문제없이 지속적으로 유지되어야 하기 때문에 
UI 클래스의 라이프사이클에 영향을 받지 않도록 독립되어 있다.

이러한 구현을 돕기 위해 AAC가 만들어진 것이다.
AAC는 앱에 대한 테스트나 유지보수가 용이한 앱을 디자인할 수 있는 라이브러리들의 모음으로 대표적인 컴포넌트 3가지만 소개한다.

1. ViewModel
ViewModel은 앱의 라이프사이클을 고려하여 UI 관련 데이터를 저장하고 관리하는 컴포넌트이다.

2. LiveData
LiveData는 데이터 홀더 클래스로 앱 컴포넌트의 라이프사이클을 인식하며, 활성 상태의 옵저버들에게만 업데이트된 정보들을 전달한다.

3. Room
Room은 SQLite를 기반으로 한 추상화 레이어를 제공하여 DB에 자유롭게 액세스 할 수 있는 라이브러리이다.

참고 레퍼런스

+ Recent posts