AAC(Android Architecture Components)
Jetpack이 2017년도에 발표한 라이브러리.
LifeCycles
생명주기 모니터링을 도움
- Lifecycle Owner
- Lifecycle Observer
LiveData
관찰자(activity, fragment)의 생명주기를 알고있는 간단한 observable
- 보통 viewModel과 같이 사용됨
- observable 패턴을 구현하기위해 사용됨
- 수명주기를 수동으로 처리하지 않아도 되고, 메모리 누수도 사라짐
ViewModel
수명주기를 고려해 ui관련 데이터를 저장하고 관리하도록 설계됨.
- 보존 가능한 이유; activity → LifecycleObserver(), fragment → FragmentStateManager 로 view의 lifycycle을 관찰하다가, view가 종료되었을때 clear()
- activity 종료시까지 유지됨 (saveinstanceState대신 사용)
- 회전 등 변화 있을때도 유지됨.
- 하지만 Lifecycle 또는 view, activity context를 참조하면 메모리 누수가 발생하므로, 이러한 객체를 참조해서는 안된다.
- 또한 LiveData와 같은 LifecycleObserver들을 포함할 수 있지만, LiveData와 같이 수명 주기를 인식하는 Observable의 변경사항을 관찰하면 안 된다.
Databinding
선언형 형식으로 Data를 UI에 쉽게 Binding하기 쉽게 해주며 findViewById에 의한 객체 획득 번거로움을 제거해주는 라이브러리.
<TextView
android:text="@{viewmodel.userName}" />
이런식으로, 레이아웃에 직접 결합 가능
Room
SQLite개체 매핑 라이브러리. 이걸 이용하면 자바 객체로 쉽게 매핑 가능
SQLite의 컴파일 시간 확인을 제공하며, RxJavam, Flowable, LiveData, Observable을 반환할 수 있음

*DAO : 앱에서 데이터 추가, 삭제, 업데이트 하도록 메소드 제공해줌. 다양한 쿼리 사용 가능
*Entity: 데이터베이스내에 존재하는 테이블을 가리킴
Paging
대규모 데이터셋의 데이터 페이지를 로드할 때, 일정한 덩어리로 쪼개서 로드하는것
- PagingSource
- repository layer의 기본 페이징 라이브러리 구성 요소.
- 데이터 소스와 이 소스에서 데이터를 검색하는 방법을 정의
- 네트워크 소스 및 로컬 데이터베이스를 포함한 단일 소스에서 데이터를 로드함.
- RemoteMediator
- repository layer의 다른 페이징 라이브러리 구성 요소.
- 로컬 DB 캐시가 있는 네트워크 데이터 소스와 같은 계층화된 데이터소스의 페이징을 처리함 → 네트워크에서 데이터를 불러올 때, 캐싱해서..내부에 저장하고 거기서 불러옴
- Pager
- PagingData 인스턴스를 구성하기 위한 공개 API를 제공한다…
- pager로부터 Flow, Observable, LiveData 형태로 반환
- PagingData
- ViewModel과 UI 연결 데이터의 스냅샷을 보유하는 컨테이너
- PagingConfig
- PagingSource를 구성하는 방법을 정의함
- PagingDataAdapter
- UI레이어의 기본 페이징 라이브러리 구성요소
- DiffUtil를 사용함
Navigation
사용자가 앱 내의 여러 콘텐츠를 Navigation(탐색)하고 그곳에 들어갔다 나올 수 있게 하는 상호작용을 의미
- arguments를 보낼 수도 있음
WorkManager
지속적인(즉시실행 / 장기 실행 / 지연 가능) 백그라운드 작업을 위함……….
Worker class정의해서 사용함
Uploaded by N2T