AAC

2023. 7. 26. 11:09개발/Android

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

'개발 > Android' 카테고리의 다른 글

Recyclerview Payload  (0) 2023.07.28
Connectivity Manager  (0) 2023.07.28
알아두면 좋은 Kotlin extension  (0) 2023.07.26
Android Macrobenchmark  (0) 2023.07.26
Baseline Profiles  (0) 2023.07.26