[Android] Android AAC

박상군·2021년 10월 18일
3

Android

목록 보기
1/9
post-thumbnail

AAC(Android Architecture Components)란?
공식 홈페이지에 따르면 "강력하고 테스트와 유지관리가 쉬운 앱을 디자인하도록 돕는 라이브러리 모음입니다." 라고 쓰여 있는데 크게 4가지로 나눌 수 있습니다.

  • LifeCycle

  • ViewModel

  • Room

  • LiveData


1. LifeCycle

LifeCycle은 액티비티의 상태에 따라 처리되는 코드를 쉽게 관리할 수 있게 도와주는 라이브러리입니다. LifeCycle을 사용하면 기존 코드를 더 읽기 쉽고, 관리하기 쉬운 코드로 만들 수 있습니다.

LifeCycle의 주요 클래스

  • Lifecycle : Lifecylce을 나타내는 객체입니다.
  • LivecycleOwner: Activity객체를 말하며 Lifecycle객체에 액티비티 상태를 제공해줍니다.
  • LifecycleObserver: Lifecycle로부터 액티비티 상태변화에 대한 이벤트를 받습니다.
  • Observer객체를 생성하여 Lifecycle을 전달해주면 Observer에서 Lifecycle에 접근하여 현재 상태를 알 수 있는 구조입니다.
  • 내부적으로 Activity의 상태가 변경되면 Lifecycle로 전달되고 Lifecycle은 Observer에게 상태를 알려줍니다.

2. ViewModel

ViewModel은 기존 MVC패턴과 MVP 패턴의 Controller와 Presenter의 역할과 비슷하지만 View는 UI갱신만 할 수 있도록 관심사를 분리하는데 있어 필요한 컴포넌트입니다.

ViewModel의 LifeCycle은 다음과 같습니다.


ActivityFragment가 종료되거나 분리될 때까지 유지됩니다.

ViewModel클래스는 ViewModel 클래스를 상속 받습니다. 이때 ViewModelAndroidViewModel이 존재하는데 두가지의 차이점은 AndroidViewModelApplication을 상속받아 Context관련 작업을 할 수 있지만 Memory Leak이 발생할 수 있습니다.


3. Room

Room은 SQLite기반에 추상화 레이어를 제공하여 개발자가 좀 더 원할한 데이터베이스를 활용하도록 도와주는 라이브러리입니다.

Room에는 다음과 같은 세 가지 구성요소가 있습니다.

  • Database
  • Entity
  • DAO

1. Database

  • @Database 어노테이션을 사용하고 RoomDatabase를 확장하는 추상클래스입니다.
  • 인수가 0개이며 @Dao 어노테이션이 지정된 클래스를 반환하는 추상 메소드가 포함되어야 합니다.

2. Model

  • 데이터베이스 내의 테이블을 나타냅니다.

3. DAO

  • 데이터베이에 액세스하는 데 사용되는 메소드가 포함되어 있습니다.

4. LiveData

LiveData는 이름으로만 보면 살아있는 데이터??
즉 관찰 가능한 데이터 홀더 클래스입니다. 관찰 가능한 일반 클래스와 달리 LiveData는 생명주기를 인식합니다.

👍LiveData 장점

  • 메모리 누수 없음
  • 중지된 활동으로 인한 비정상 종료 없음
  • 생명 주기를 수동으로 처리하지 않음
  • 최신 데이터 유지
  • 적절한 구성 변경
  • 리소스 공유

LiveData는 일반적으로 ViewModel객체 내에 저장되고 값이 변하지 않는 LiveData와 값을 변경할 수 있는 MutableLiveData가 있습니다.
LiveData는 ViewModel클래스 안에서만 수정할 수 있는 반면에 MutableLiveDataLiveData를 확장(Extends)하고 setValue(), postValeue() 같은 메소드를 제공하여 수정하기 원할하게 도와줍니다.

LiveData는 Observer를 통해 데이터의 변화를 관찰하고 데이터를 자동으로 업데이트 합니다.
이때 Observer들은 앱의 생명주기가 활성화 상태인 Observer들에게만 최신 상태의 데이터를 주기 때문에 UI가 항상 최신의 데이터를 갖도록 합니다.


이렇게 AAC는 사용법만 잘 익힌다면, 안드로이드 개발자에게 정말 유용한 최신식 무기가 될 수 있을거라 생각합니다.

Reference

  1. Android AAC
  2. Lifecycle
  3. ViewModel
  4. Room
  5. LiveData

0개의 댓글