Android Jetpack

Paging LV1 - 1 (paging이란?)

----___<<<<< 2023. 2. 23. 10:33

간단하게 Paging에 대해서 알아보겠습니다.

 

구글 공식문서부터 한번 읽고 가볼까요?

 

페이징 라이브러리 개요   

 

페이징 라이브러리를 사용하면 로컬 저장소에서나 네트워크를 통해 대규모 데이터 세트의 데이터 페이지를 로드하고 표시할 수 있습니다. 이 방식을 사용하면 앱에서 네트워크 대역폭과 시스템 리소스를 모두 더 효율적으로 사용할 수 있습니다. 페이징 라이브러리의 구성요소는 권장 Android 앱 아키텍처에 맞게 설계되었으며 다른 Jetpack 구성요소와 원활하게 통합되고 최고 수준으로 Kotlin을 지원합니다.

 

"주목해봐야 할 것은 대규모 데이터를 처리할 수 있다" 정도인 것 같습니다. 

 

자 그렇다면 조금 더 읽어볼까요?

 

페이징 라이브러리를 사용하여 얻을 수 있는 이점

페이징 라이브러리에는 다음과 같은 기능이 있습니다.

  • 페이징된 데이터의 메모리 내 캐싱. 이렇게 하면 앱이 페이징 데이터로 작업하는 동안 시스템 리소스를 효율적으로 사용할 수 있습니다.
  • 요청 중복 제거 기능이 기본으로 제공되어 앱에서 네트워크 대역폭과 시스템 리소스를 효율적으로 사용할 수 있습니다.
  • 사용자가 로드된 데이터의 끝까지 스크롤할 때 구성 가능한 RecyclerView 어댑터가 자동으로 데이터를 요청합니다.
  • Kotlin 코루틴 및 Flow뿐만 아니라 LiveData 및 RxJava를 최고 수준으로 지원합니다.
  • 새로고침 및 재시도 기능을 포함하여 오류 처리를 기본으로 지원합니다.

 

여러가지 이점이 있다고 나옵니다.

 

여기까지 읽었는데, 왜 쓰는지 감이 오시면 좋은데, 아직까지 왜 쓰는지에 대해서 감이 오지 않는 분들을 위해 아래의 비교 그림을 그려봤습니다.

 

기존 방식으로는 아래와 같이 한번에 API 콜을 했다면

 

Paging을 통해서 데이터를 분할해서 가져올 수 있습니다.

 

 

각자의 코드들을 한번 볼까요?

 

 

하나하나씩 살펴볼까요?

 

맨 오른쪽 UI 에서 PagingDataAdapter에서 ViewModel의 Pager를 호출하고 Flow Type으로 데이터를 받습니다.

중앙 ViewModel에서 Pager를 사용해서 PagingSource를 호출합니다. 얼마나 데이터를 호출할지 정해줍니다.

맨 왼쪽 Repository 에서 PagingSource/RemoteMediator를 이용해서 데이터를 호출해줍니다. 

 

한번 코드로 한번씩 보겠습니다.

 

 

- 참조

 

https://developer.android.com/topic/libraries/architecture/paging/v3-overview?hl=ko 

 

페이징 라이브러리 개요  |  Android 개발자  |  Android Developers

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 페이징 라이브러리 개요   Android Jetpack의 구성요소 페이징 라이브러리를 사용하면 로컬 저장소에서나 네트

developer.android.com

https://developer.android.com/codelabs/android-paging-basics?hl=ko#0 

 

Android Paging 기본사항  |  Android Developers

이 Codelab에서는 목록을 표시하는 앱에 Paging 라이브러리를 통합합니다. Paging 라이브러리를 사용하면 로컬 저장소에서나 네트워크를 통해 대규모 데이터 세트의 데이터 페이지를 로드하고 표시

developer.android.com

https://github.com/android/architecture-components-samples/tree/main/PagingSample

 

GitHub - android/architecture-components-samples: Samples for Android Architecture Components.

Samples for Android Architecture Components. . Contribute to android/architecture-components-samples development by creating an account on GitHub.

github.com