오늘도 더 나은 코드를 작성하였습니까?

Paging3 개요 본문

Android Jetpack Architecture/Paging3

Paging3 개요

hik14 2021. 8. 9. 11:31

얻을수 있는 점

1. 페이징된 데이터를 메모리에 캐싱  -> 시스템 자원을 효율적으로 사용.

2. 데이터 요청의 중복을 제거 기능 -> 네트워크 대역폭과 자원을 효율적 사용.

3. 로드된 데이터를 끝까지 스크롤할때 Recyclerview 자동으로 데이터 요청. 

4. Kotlin coroutine / Flow뿐만 아니라 LiveData 및 RxJava를 최고 수준으로 지원

5. 새로고침 / 재시도 등을 포함한 오류처리 기본지원. 

 

아키텍처

 

- repositort

- viewModel

- ul

repository

PagingSource

 

- PagingSource 객체는 데이터 소스와 이 소스에서 데이터를 검색하는 방법을 정의

- PagingSource 객체는 네트워크 소스 및 로컬 데이터베이스를 포함한 단일 소스에서 데이터를 로드할 수 있다.

- load() 초기 데이터 로드,  getRefreshKey() 새로고침 데이터 로드 를 정의한다.

- LoadResult의 모델링된 성공 실패 처리 반환.

 

RemoteMediator

 

-  RemoteMediator 객체는 로컬 데이터베이스(room, realm)캐시가 있는 네트워크 데이터 소스와 같은 계층화된 데이터 소스의 페이징을 처리

ViewModel

pager

- repository 에서 정의한 PagingSource 및 PagingConfig 객체를 바탕으로 반응형 스트림에 노출되는 PagingData 를 구성하기 위한 공개 API 제공

UI

PagingDataAdapter

- recyclerView의 Adapter로 페이지로 나눠진 데이터를 처리한다.

 

AsyncPagingDataDiffer

- 고유한 맞춤 어뎁터를 빌드 

 

앱에서 UI용 Compose를 사용하는 경우 페이징을 UI 레이어에 통합하는 데 androidx.paging:paging-compose 아티팩트를 대신 사용하세요. 자세한 내용은 collectAsLazyPagingItems()에 관한 API 문서를 참조하세요