https://developer.android.com/topic/libraries/architecture/paging/v3-overview?hl=ko
안드로이드에서 대용량 데이터를 처리하는 경우, 한 번에 모든 데이터를 가져오는 것은 성능상 문제가 될 수 있다. 이 때, 페이징 라이브러리
를 사용하면 데이터를 페이지 단위로 로딩할 수 있다.
페이징된 데이터의 메모리 내 캐싱
앱이 페이징 데이터로 작업하는 동안 시스템 리소스를 효율적으로 사용할 수 있다.
요청 중복 제거 기능 기본적으로 제공
앱에서 네트워크 대역폭과 시스템 리소스를 효율적으로 관리할 수 있다.
사용자가 로드된 데이터의 끝까지 스크롤할 때 RecyclerView
어댑터가 자동으로 데이터를 요청한다.
코루틴 및 Flow 뿐만 아니라 LiveData 및 RxJava도 지원
새로고침 및 재시도 기능 포함하여 오류 처리를 기본적으로 지원
https://velog.io/@eoqkrskfk94/Paging-3-MVVM-Coroutine-Hilt-Flow를-사용해-RecyclerView-구현하기
페이징 라이브러리를 사용하기 위해 구현해야 할 것을 알아보자.
PagingSource
는 페이징 라이브러리의 핵심 클래스 중 하나이다. 이 클래스는 데이터를 가져오는 방법을 정의한다.
PagingSource는 다음과 같은 메서드를 구현해야 한다.
load(): 데이터를 가져오는 메서드
이 메서드는 페이지 단위로 호출된다. 즉, 한 번 호출될 때 한 페이지의 데이터를 가져와야 한다.
getRefreshKey(): 데이터를 새로 고침할 때 사용되는 키를 반환하는 메서드
이 키는 PagedList가 새로고침될 때마다 변경된다.
PagingData를 리사이클러뷰 어댑터에 연결한다. 또한 PagingData가 변경되면 어댑터에게 알리고, 자동으로 새로운 페이지를 로드한다.
viewModel.pagingData.binds(viewLifecycleOwner){
productListAdapter.submitData(it)
}