ABOUT ME

-

  • 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

    Paging 3 라이브러리 개요

     

    Paging Library, 그것이 쓰고싶다

     

    반응형

    댓글

Designed by Me.