Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Paging 3 ライブラリの概要   Android Jetpack の一部。

ページング ライブラリを使用すれば、大規模なデータセットからデータのページをローカル ストレージやネットワーク経由で読み込んで表示できます。このアプローチにより、アプリはネットワーク帯域幅とシステム リソースの両方をより効率的に使用できます。ページング ライブラリのコンポーネントは、推奨の Android アプリ アーキテクチャに適合し、他の Jetpack コンポーネントと正常に統合され、最高級の Kotlin サポートを提供するように設計されています。

ページング ライブラリを使用する利点

ページング ライブラリには以下の機能があります。

  • ページング データに対するメモリ内キャッシュ。アプリでシステム リソースを効果的に使用するとともに、ページング データを操作できるようになります。
  • 組み込みのリクエスト重複排除。アプリでネットワーク帯域幅とシステム リソースを効率的に使用できるようになります。
  • 読み込まれたデータの一番下までスクロールすると、データが自動的にリクエストされる構成可能な RecyclerView アダプター。
  • Kotlin のコルーチンとフロー、LiveData、RxJava に関する最高級のサポート。
  • 更新機能や再試行機能など、エラー処理の組み込みサポート。

フィードバックを送信

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

セットアップ

Paging コンポーネントを Android アプリにインポートするには、次の依存関係をアプリの build.gradle ファイルに追加します。

dependencies {
  def paging_version = "3.0.0-alpha12"

  implementation "androidx.paging:paging-runtime:$paging_version"

  // alternatively - without Android dependencies for tests
  testImplementation "androidx.paging:paging-common:$paging_version"

  // optional - RxJava2 support
  implementation "androidx.paging:paging-rxjava2:$paging_version"

  // optional - RxJava3 support
  implementation "androidx.paging:paging-rxjava3:$paging_version"

  // optional - Guava ListenableFuture support
  implementation "androidx.paging:paging-guava:$paging_version"

  // Jetpack Compose Integration
  implementation "androidx.paging:paging-compose:1.0.0-alpha05"
}

ライブラリのアーキテクチャ

ページング ライブラリは、推奨の Android アプリ アーキテクチャに直接統合されています。ライブラリ コンポーネントは、アプリの 3 つのレイヤで動作します。

  • リポジトリ レイヤ
  • ViewModel レイヤ
  • UI レイヤ
ページング データは、リポジトリ レイヤの PagingSource または RemoteMediator コンポーネントから ViewModel レイヤの Pager コンポーネントに流れます。その後、Pager コンポーネントが PagingData のフローを UI レイヤの PagingDataAdapter に公開します。
図 1. ページング ライブラリがアプリのアーキテクチャにどのように適合するかを示す例。

このセクションでは、各レイヤで動作するページング ライブラリ コンポーネントについて、およびそれらがどのように連携してページング データの読み込みと表示を行うかについて説明します。

リポジトリ レイヤ

リポジトリ レイヤのメインのページング ライブラリ コンポーネントは PagingSource です。各 PagingSource オブジェクトは、データのソースと、そのソースからデータを取得する方法を定義します。PagingSource オブジェクトを使用すると、ネットワーク ソースやローカル データベースなど、任意の単一ソースからデータを読み込めます。

他に使用可能なページング ライブラリ コンポーネントには、RemoteMediator があります。RemoteMediator オブジェクトは、ローカル データベース キャッシュを使用するネットワーク データソースなど、階層化されたデータソースからのページングを処理します。

ViewModel レイヤ

Pager コンポーネントは、PagingSource オブジェクトと PagingConfig 構成オブジェクトに基づき、リアクティブ ストリームで公開される PagingData のインスタンスを構築するための公開 API を提供します。

ViewModel レイヤを UI に接続するコンポーネントは、PagingData です。PagingData オブジェクトは、ページ分けされたデータのスナップショットを格納するコンテナです。PagingSource オブジェクトに対してクエリを実行し、結果を保存します。

UI レイヤ

UI レイヤのメインのページング ライブラリ コンポーネントは PagingDataAdapter です。これは、ページ分けされたデータを処理する RecyclerView アダプターです。

付属の AsyncPagingDataDiffer コンポーネントを使用して、独自のカスタム アダプターを作成することもできます。

参考情報

ページング ライブラリについて詳しくは、以下の参考情報をご覧ください。

Codelab

サンプル