[안드로이드] - AAC(Android Architecture Components)

이상욱·2022년 12월 18일
0

안드로이드

목록 보기
2/17
post-thumbnail
post-custom-banner

✅ AAC란?

Google I/O 2017에서 새로운 라이브러리들을 Android Architecture Components(AAC)로 묶어서 발표하였습니다.

총 5개의 라이브러리로 이루어져 있습니다.
1. LifeCycles (Easy handling lifecycles)
2. LiveData (Lifecycle aware observable)
3. ViewModel (Managing data in a lifecycle)
4. Room (Object Mapping for SQLite)
5 Paging(Gradually loading information)

1. LifeCycles

LifeCycles는 생명주기 모니터링을 돕습니다. 크게 LifeCycleOwner와 LifeCycle Observer로 이루어져 있습니다. LifeCycles를 통해 우리는 화면 밖에서 화면의 생명주기를 모니터링 하고, 동작을 정의할 수 있습니다. 이는 더 직관적인 생명주기 프로그래밍을 가능하게 합니다.

2. LiveData

LiveData는 데이터를 개선된 Observable로 Wrapping하여 생명주기와 데이터 변경을 인지할 수 있도록 합니다. LiveData의 장점으로는

  1. LiveData는 observable 패턴을 사용하기에 데이터의 변화를 구독한 곳으로 통지하고, 업데이트 합니다.
  2. 메모리 누수 없는 사용을 보장한다.
  3. Lifecycle에 따라 LiveData의 이벤트를 제어한다.
  4. 항상 최신 데이터를 유지한다.
  5. 기기 회전이 일어나도 최신데이터를 처리할 수 있도록 도와준다. (AAC-ViewModel과 함께 사용시)

이 있습니다.

3. ViewModel

수명주기를 고려하여 UI관련 데이터를 저장하고 관리하도록 설계되었습니다. ViewModel 클래스를 사용하면 화면전환과 같이 구성을 변경할 때도 데이터를 보존할 수 있습니다.

AAC ViewModel이 데이터의 보존이 가능한 이유로는 ViewModel이 Activity의 경우 LifecycleEventObserver()로 Fragment에서는 FragmentStateManager로 View의 Lifecycle을 관찰하다 View가 종료되었을 때 Clear()를 하기때문에 종료가 되지 전까지 데이터가 보존되는 것입니다.

4. Room

SQLite 개체 매핑 라이브러리 입니다. Room을 사용하여 사용구 코드를 피하고 SQLite 테이블 데이터를 자바 객체로 쉽게 변환할 수 있습니다. Room은 SQLite 문의 컴파일 시간 확인을 제공하며 RxJavam, Flowable, LiveData, Observable을 반환할 수 있습니다.

Room 구성 요소

데이터베이스 : 데이터베이스는 앱에 저장되어 있는 로컬 데이터에 대한 액세스 포인트를 제공해줍니다.
DAO(Data Access Object) : DAO는 앱에서 데이터베이스의 데이터를 추가, 삭제, 업데이트 작업을 할 수 있는 메소드를 제공해주는 역할, 그 외에도 다양한 쿼리를 사용할 수 있습니다.
Entity : 데이터베이스 내에 존재하는 테이블을 가리킵니다.

5. Paging

페이징 라이브러리를 사용하면 로컬 저장소에서나 네트워크 를 통해 대규모 데이터세트의 데이터 페이지를 로드하고 표시할 수 있습니다. 이 방식을 사용하면 앱에서 네트워크 대역폭과 시스템 리소스를 모두 더 효율적으로 사용할 수 있습니다.

레퍼런스
https://velog.io/@heetaeheo/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-AAC

https://medium.com/@maryangmin/android-architecture-components-%EC%86%8C%EA%B0%9C-1-8e04491be1f6

profile
항상 배우고 성장하는 안드로이드 개발자
post-custom-banner

0개의 댓글