Omówienie biblioteki stronicowania Część stanowiąca część Androida Jetpack.

Biblioteka stronicowania ułatwia ładowanie i wyświetlanie stron danych z większego zbioru danych z pamięci lokalnej lub przez sieć. Takie podejście pozwala aplikacji efektywniej wykorzystywać przepustowość sieci i zasoby systemowe. Komponenty biblioteki Paging zostały zaprojektowane tak, aby pasowały do zalecanej architektury aplikacji na Androida, integrują się bezproblemowo z innymi komponentami Jetpack i zapewniają znakomitą obsługę Kotlin.

Zalety korzystania z biblioteki stronicowania

Biblioteka stronicowania zawiera te funkcje:

  • Buforowanie w pamięci dla danych stronicowanych. Pomaga to zadbać o to, aby aplikacja efektywnie korzystała z zasobów systemowych podczas pracy z uporządkowanymi danymi.
  • Wbudowana funkcja usuwania duplikatów żądań, która pomaga zapewnić efektywne korzystanie przez aplikację z przepustowości sieci i zasobów systemowych.
  • Konfigurowalne adaptery RecyclerView, które automatycznie wysyłają żądania danych, gdy użytkownik przewija je pod koniec wczytywanych danych.
  • Obsługa pierwszej klasy kotlin i przepływów oraz narzędzi LiveData i RxJava.
  • Wbudowana obsługa błędów, w tym funkcje odświeżania i ponawiania prób.

Prześlij opinię

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, sprawdź, czy występują w niej istniejące problemy. Klikając przycisk gwiazdki, możesz oddać głos w sprawie istniejącego problemu.

Utwórz nowy numer

Więcej informacji o przesyłaniu opinii znajdziesz w dokumentacji narzędzia Issue Tracker.

Skonfiguruj

Aby zaimportować komponenty stronicowania do aplikacji na Androida, dodaj do jej pliku build.gradle te zależności:

Odlotowe

dependencies {
  def paging_version = "3.3.2"

  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.2"
}

Kotlin

dependencies {
  val paging_version = "3.3.2"

  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.2")
}

Architektura biblioteki

Komponenty biblioteki stronicowania działają w 3 warstwach aplikacji:

  • Warstwa repozytorium
  • Warstwa ViewModel
  • Warstwa interfejsu
Obraz przedstawiający przepływy danych z podziałem na strony z komponentów PagingSource i RemoteMediator w warstwie repozytorium do komponentu Pager w warstwie ViewModel.
    Następnie komponent Pager ujawnia przepływ danych PagingData dla PagingDataAdapter w warstwie interfejsu użytkownika.
Rysunek 1. Przykład pokazujący, jak biblioteka stronicowania wpasowuje się w architekturę Twojej aplikacji.

W tej sekcji opisujemy komponenty biblioteki stronicowania, które działają w poszczególnych warstwach, oraz sposób ich współdziałania przy wczytywaniu i wyświetlaniu danych stronicowanych.

Warstwa repozytorium

Podstawowym komponentem biblioteki stronicowania w warstwie repozytorium jest PagingSource. Każdy obiekt PagingSource określa źródło danych oraz sposób ich pobierania. Obiekt PagingSource może wczytywać dane z dowolnego źródła, w tym ze źródeł sieciowych i lokalnych baz danych.

Innym komponentem biblioteki stronicowania, z którego możesz korzystać, jest RemoteMediator. Obiekt RemoteMediator obsługuje stronicowanie ze źródła danych warstw, takiego jak źródło danych sieciowych z lokalną pamięcią podręczną bazy danych.

Warstwa ViewModel

Komponent Pager udostępnia publiczny interfejs API służący do tworzenia instancji PagingData, które są udostępniane w strumieniach reakcji, na podstawie obiektu PagingSource i obiektu konfiguracji PagingConfig.

Komponent łączący warstwę ViewModel z interfejsem użytkownika to PagingData. Obiekt PagingData to kontener na zrzut danych podzielonych na strony. Wysyła zapytanie do obiektu PagingSource i zapisuje wynik.

Warstwa interfejsu

Podstawowym komponentem biblioteki stronicowania w warstwie interfejsu jest PagingDataAdapter – adapter RecyclerView, który obsługuje dane podzielone na strony.

Możesz też użyć dołączonego komponentu AsyncPagingDataDiffer, aby utworzyć własny adapter niestandardowy.

Dodatkowe materiały

Więcej informacji o bibliotece stronicowania znajdziesz w tych dodatkowych materiałach:

Ćwiczenia z programowania

Próbki