Ringkasan library paging Bagian dari Android Jetpack.

Library Paging membantu Anda memuat dan menampilkan halaman data dari set data yang lebih besar dari penyimpanan lokal atau melalui jaringan. Pendekatan ini memungkinkan aplikasi Anda menggunakan bandwidth jaringan dan resource sistem secara lebih efisien. Komponen library Paging didesain agar sesuai dengan arsitektur aplikasi Android yang direkomendasikan, terintegrasi rapi dengan komponen Jetpack lainnya, dan menyediakan dukungan kelas satu untuk Kotlin.

Manfaat menggunakan library Paging

Library Paging mencakup fitur berikut:

  • Cache dalam memori untuk data Anda yang dibagi-bagi. Hal ini membantu memastikan bahwa aplikasi Anda menggunakan resource sistem secara efisien saat menangani data yang dibagi-bagi.
  • Penghapusan duplikat permintaan bawaan, yang membantu memastikan aplikasi Anda menggunakan bandwidth jaringan dan resource sistem secara efisien.
  • Adaptor RecyclerView yang dapat dikonfigurasi yang otomatis meminta data saat pengguna men-scroll ke akhir data yang dimuat.
  • Dukungan kelas satu untuk coroutine Kotlin dan flow, serta LiveData dan RxJava.
  • Dukungan bawaan untuk penanganan error, termasuk kemampuan refresh dan percobaan kembali.

Berikan masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Periksa masalah yang sudah diketahui untuk library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk mengetahui informasi selengkapnya tentang cara mengirimkan masukan.

Penyiapan

Untuk mengimpor komponen Paging ke dalam aplikasi Android, tambahkan dependensi berikut ke file build.gradle aplikasi Anda:

Groovy

dependencies {
  def paging_version = "3.3.5"

  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"

  // optional - Jetpack Compose integration
  implementation "androidx.paging:paging-compose:3.3.5"
}

Kotlin

dependencies {
  val paging_version = "3.3.5"

  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")

  // optional - Jetpack Compose integration
  implementation("androidx.paging:paging-compose:3.3.5")
}

Arsitektur library

Komponen library Paging beroperasi di tiga lapisan aplikasi Anda:

  • Lapisan repositori
  • Lapisan ViewModel
  • Lapisan UI
Gambar yang menunjukkan aliran data yang dibagi-bagi dari komponen PagingSource atau RemoteMediator di lapisan repositori ke komponen Pager di lapisan ViewModel.
    Selanjutnya, komponen Pager menampilkan Aliran PagingData ke
    PagingDataAdapter di lapisan UI.
Gambar 1. Contoh cara library Paging menyesuaikan arsitektur aplikasi Anda.

Bagian ini menjelaskan komponen library Paging yang beroperasi di setiap lapisan dan cara kerjanya bersama untuk memuat dan menampilkan data yang dibagi-bagi.

Lapisan repositori

Komponen library Paging utama di lapisan repositori adalah PagingSource. Setiap objek PagingSource menentukan sumber data dan cara mengambil data dari sumber tersebut. Objek PagingSource dapat memuat data dari sumber tunggal mana pun, termasuk sumber jaringan dan database lokal.

Komponen library Paging lain yang dapat Anda gunakan adalah RemoteMediator. Objek RemoteMediator menangani paging dari sumber data berlapis, seperti sumber data jaringan dengan cache database lokal.

Lapisan ViewModel

Komponen Pager menyediakan API publik untuk membuat instance PagingData yang terekspos dalam aliran reaktif, berdasarkan objek PagingSource dan objek konfigurasi PagingConfig.

Komponen yang menghubungkan lapisan ViewModel ke UI adalah PagingData. Objek PagingData adalah penampung untuk snapshot data yang telah dipaginasi. Objek ini akan meminta objek PagingSource dan menyimpan hasilnya.

Lapisan UI

Komponen library Paging utama di lapisan UI adalah PagingDataAdapter, yaitu adaptor RecyclerView yang menangani data yang dipaginasi.

Atau, Anda dapat menggunakan komponen AsyncPagingDataDiffer yang disertakan untuk membuat adaptor kustom sendiri.

Referensi lainnya

Untuk mempelajari library Paging lebih lanjut, lihat referensi tambahan berikut:

Codelab

Contoh