-
Android) Jetpack Paging 3 라이브러리 알아보기Android 2021. 2. 16. 23:56
Paging
- Paging이란 데이터를 일정한 덩어리로 나눠서 제공하는 것을 의미.
- 즉 모든 데이터를 가져오는 것이 아닌 한 번에 작은 데이터 덩어리만 가져오는 것입니다. 사용자가 목록 끝에 도달하면 앱에서 더 많은 데이터를 로드합니다.
예를들어 구글에서 어떤 키워드를 검색하는 경우,
검색어에 해당하는 모든 데이터를 화면에 제공하는 것이 아니라
한 페이지당 10개의 데이터씩 데이터를 제공하는 것입니다.
그렇게 되면 성능, 메모리, 비용 면에서 효율적으로 이용할 수 있습니다.
Paging3 Library
Paging 3 라이브러리는 이전 버전들과 달라진 점들이 있다고 합니다. 그 새로운 기능 중 일부는 다음과 같습니다.
- Paging3 라이브러리는 다양한 데이터 소스에서 대량의 data set를 효율적으로 관리하고 로드하기위한 새로운 Jetpack 라이브러리 중 하나입니다.
- 이를 통해 네트워크 또는 로컬 데이터베이스에서 데이터 페이지를 쉽게 로드하고 개발 시간을 절약 할 수 있습니다.
- Paging3 라이브러리는 Android 앱 아키텍처를 따르고 Kotlin을 우선으로 지원하며 다른 Jetpack 구성 요소와 통합하도록 설계되었습니다.
- Coroutines 및 Flow뿐만 아니라 LiveData 및 RxJava도 최고 수준으로 지원합니다.
- 오류 처리, 새로 고침 및 재시도 기능을 지원합니다.
- 상태 머리글, 바닥 글 및 목록 구분 기호를로드하는 기능이 내장되어 있습니다.
- 데이터의 메모리 캐싱에서 시스템 리소스의 효율적인 사용을 보장합니다.
- API 요청 중복을 방지합니다.
Paging3 & Application Architecture
- Paging3 라이브러리는 Repository -> ViewModel -> UI와 같은 어플리케이션의 모든 레이어에 위치하며 작동합니다.
PagingSource
- Repository 레이어의 기본 페이징 라이브러리 구성요소는 PagingSource입니다.
- 네트워크에서 페이징 데이터를 로드하는 일반적인 추상 클래스입니다.
- 데이터를 검색하는 방법을 정의합니다.
RemoteMediator
- 네트워크 및 로컬 DB에서 페이징 데이터를로드하는 역할을합니다.
- 로컬 DB가 페이징 어댑터의 주요 데이터 소스이므로 페이징을 구현하는 좋은 방법입니다.
- 이 방법은 훨씬 더 안정적이며 오류 발생 가능성이 적습니다.
Pager
- PagingSource 객체 및 PagingConfig 구성 객체를 바탕으로 반응형 스트림에 노출되는 PagingData 인스턴스를 구성하기 위한 공개 API를 제공합니다.
PagingConfig
- 페이징 구성 클래스입니다.
- 여기서 PagingSource를 구성하는 방법을 정의 할 수 있습니다.
- 즉, 각 페이지에 얼마나 많은 데이터가 있어야하는지 정의 할 수 있으며 PagingSource를 사용자 지정하기위한 더 많은 옵션이 있습니다.
PagingData
- ViewModel 레이어를 UI에 연결하는 구성요소는 PagingData입니다.
- PagingData 객체는 페이지로 나눈 데이터의 스냅샷을 보유하는 컨테이너입니다.
- PagingSource 객체를 쿼리하여 결과를 저장합니다.
PagingDataAdapter
- RecyclerView에 데이터를 표시하는 기본 UI 구성 요소입니다.
- PagingData를 입력 유형으로 사용하고 내부로드 이벤트를 수신합니다.
- 백그라운드 스레드에서 DiffUtil을 사용하여 미세 조정 한 후 데이터를로드하므로 UI 스레드에 새 항목을 추가하는 동안 문제가 발생하지 않습니다.
Reference
반응형'Android' 카테고리의 다른 글
Android) Room에서 List 또는 객체를 필드에 저장하는법 feat) @Embeded @TypeConverter (0) 2021.02.19 Android) asStateFlow() 메소드 알아보기 (0) 2021.02.17 Android) Airbnb에서 만든 MvRx 알아보기 (0) 2021.02.15 Android) RecyclerView를 쉽게 사용하도록 도와주는 Epoxy 알아보기 (3) 2021.02.15 Android) MVVM 패턴 깊게 알아보기 (0) 2021.02.10