Paging3 개요
얻을수 있는 점
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 문서를 참조하세요