AAC(Android Architecture Components)

이채윤·2022년 2월 7일

android studio

목록 보기
7/7

[AAC 배경]

  • 안드로이드는 Activity,BroadcastReceiver,Service등 여러 컴포넌트들을 제공하는데, 이것들은 생명주기와 얽혀있다.
  • 앱을 잘 만들기 위해서는 이러한 컴포넌트들을 부드럽게 동작하도록 해야하는데, 그러기 위해서는 생명주기/수명주기를 잘 학습해서 엉키지 않도록 해야했다. → 개발자의 몫
  • 수명주기에 의해 생성되는 문제에 대한 '솔루션' 이 없었기 때문에 ,본인만의 솔루션을 만들거나 공식적인 지원이 없는 라이브러리등을 채택해서 개발을 해와야 했었다.

[AAC 등장]

  • 그래서, 구글은 2017 Google I/O 에서 Android Application Architecture를 공식 권장사항으로 발표하고, 이를 구현할 컴포넌트들을 제공하기로 했다.
  • 이것이 바로 AAC(Android Architecture Components) 이다.

[기본적으로 지켜야하는 아키텍처의 원칙 (Android Application Architecture)]

  • 좋은 안드로이드 앱을 만들기 위한 안전한 방법 2가지 포인트를 제안한다.

<관심사 분리>

  • 가장 중요한 원칙. 뷰와 모델의 분리가 되어야 한다. UI기반의 클래스는 UI 및 운영체제 상호작용을 처리하는 로직만 포함되어야 한다.
    UI기반의 클래스를 최대한 가볍게 유지해야, 수많은 생명주기 문제를 피할 수 있다.

<모델에서 UI만들기>

  • 모델에서 UI를 만들어야 한다. 모델은 앱의 데이터를 처리하는 구성요소로써, 앱의 뷰객체 및 앱 구성요소와는 독립되어 있으므로 생명주기 문제에 영향을 받지 않는다.
    데이터 관리 책임이 잘 정의된 모델클래스(지속모델)를 기반으로 앱을 만드는것이 이상적이다.

[등장한 새로운 아키텍처]

  • Room, ViewModel, LiveData, and Lifecycle 의 4가지 구성요소가 있다.

  • Lifecycle : 생명주기 모니터링을 돕는다. (Lifecycle Owner / Lifecycle Observer)

  • LiveData : 개선된 Observable, 생명주기와 데이터 변경을 감지. (onActive() / onInactive() : resume 또는 started 상태에서의 ovserver의 갯수를 확인)

  • ViewModel : 데이터를 생명주기와 분리하도록 도와줌. ViewModelProviders로 Scope를 관리하여, Scope내에서는 하나의 인스턴스만을 유지하여 작업이 중복되거나 소실되지 않도록 함.

  • Room : Annotation기반의 ORM(Object Relation Mapping) 라이브러리 중 하나

0개의 댓글