이동식 저장소

Paging overview 본문

Primary/Android

Paging overview

해스끼 2023. 4. 12. 22:21

대량의 데이터를 유저에게 보이는 부분만 조금씩 가져오고 싶을 때 Jetpack Paging 라이브러리를 사용할 수 있다. 

아키텍쳐

Paging 라이브러리는 DataStoreRepositoryViewModelUI로 이어지는 안드로이드 권장 아키텍쳐에서 바로 사용할 수 있다. 이 문단에서는 개념만 소개하고, 아래에서 실제로 구현해 보겠다.

Repository layer

Repository layer에서는 PagingSource를 정의해야 한다. PagingSource는 하나의 source로부터 데이터를 로드하는 작업을 정의한다. 예를 들어 로컬 DB나 원격 서버에서 데이터를 받아오는 작업을 정의할 수 있다.

 

데이터를 받아오는 로직이 계층 구조로 되어 있다면 RemoteMediator를 사용할 수도 있다. 예를 들어 원격 서버에서 받아온 데이터를 로컬 DB에 캐시하여 저장하는 경우에 RemoteMediator를 사용할 수 있다.

ViewModel layer

ViewModel layer에서는 Pager를 사용해야 한다. Pager를 사용하면 PagingSourcePagingConfig(페이징 구성 객체)로부터 PagingData를 만들 수 있다. PagingData는 페이징된 데이터의 일부를 담는 객체이다.

 

만들어진 PagingDataFlowLiveData, RxJava를 통해 UI로 전달된다.

UI layer

UI 레이어에서는 RecyclerView의 어댑터 중 PagingDataAdapter를 사용하여 데이터를 보여준다. 또는 AsyncPagingDataDiffer를 상속받아 커스텀 어댑터를 작성할 수도 있다.

 

Compose를 사용하고 있다면 collectAsLazyPagingItems() API를 사용해야 한다.

 

'Primary > Android' 카테고리의 다른 글

Parcelable vs. Serializable  (0) 2023.07.22
Paging 구현 (기초)  (0) 2023.04.13
lifecycleOwner vs. viewLifecycleOwner  (0) 2023.03.17
Android Studio Giraffe 신기능 정리  (0) 2023.02.18
App Startup  (0) 2023.01.25