Omówienie biblioteki stron w ramach Jetpacka na Androida
Biblioteka stron pomaga wczytywać i wyświetlać strony danych z większego zbioru danych z pamięci lokalnej lub sieci. Dzięki temu aplikacja może efektywniej wykorzystywać zarówno przepustowość sieci, jak i zasoby systemowe. Komponenty biblioteki stron zostały zaprojektowane tak, aby pasowały do zalecanej architektury aplikacji na Androida, ściśle integrowały się z innymi komponentami Jetpacka i zapewniały pierwszorzędne wsparcie Kotlina.
Zalety korzystania z biblioteki stron z przekierowaniami
Biblioteka stron zawiera te funkcje:
- Buforowanie w pamięci dla danych w postaci stron. Dzięki temu aplikacja będzie efektywnie korzystać z zasobów systemu podczas pracy z danymi na stronach.
- Wbudowana reduplikacja żądań, która pomaga aplikacji efektywnie korzystać z przepustowości sieci i zasobów systemowych.
- Konfigurowalne adaptery
RecyclerView
, które automatycznie wysyłają żądanie danych, gdy użytkownik przewija do końca załadowanych danych. - Doskonała obsługa coroutine i przepływów w Kotlinie, a także
LiveData
i RxJava. - Wbudowane funkcje obsługi błędów, w tym odświeżania i ponownego próbowania.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową bibliotekę, sprawdź dotychczasowe problemy. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji o przesyłaniu opinii znajdziesz w dokumentacji na temat Issue Tracker.
Konfiguracja
Aby zaimportować komponenty strony do aplikacji na Androida, dodaj do pliku build.gradle
aplikacji 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 Paging działają na 3 poziomach aplikacji:
- Warstwa repozytorium
- Warstwa
ViewModel
- Warstwa interfejsu
W tej sekcji opisujemy komponenty biblioteki stronowania, które działają na poszczególnych poziomach, oraz sposób ich współpracy podczas wczytywania i wyświetlania danych na stronach.
Warstwa repozytorium
Głównym komponentem biblioteki Paging w warstwie repozytorium jest PagingSource
. Każdy obiekt PagingSource
definiuje źródło danych i sposób ich pobierania z tego źródła. Obiekt PagingSource
może wczytywać dane z dowolnego źródła, w tym z źródeł sieciowych i lokalnych baz danych.
Innym komponentem biblioteki stronowania, którego możesz użyć, jest RemoteMediator
. Obiekt RemoteMediator
obsługuje podział na strony z warstwowego źródła danych, np. źródła danych sieciowych z lokalną pamięcią podręczną bazy danych.
Warstwa ViewModel
Komponent Pager
udostępnia publiczny interfejs API do tworzenia instancji PagingData
, które są udostępniane w strumieniach reaktywnych na podstawie obiektu PagingSource
i obiektu konfiguracji PagingConfig
.
Komponent łączący warstwę ViewModel
z interfejsem to PagingData
. Obiekt PagingData
to kontener na zrzut danych pogrupowanych na strony. Wysyła zapytanie do obiektu PagingSource
i przechowuje wynik.
Warstwa interfejsu
Podstawowym komponentem biblioteki Paging na warstwie interfejsu użytkownika jest element PagingDataAdapter
, czyli RecyclerView
adapter, który obsługuje dane posortowane.
Możesz też użyć dołączonego komponentu AsyncPagingDataDiffer
, aby stworzyć własny niestandardowy adapter.
Dodatkowe materiały
Więcej informacji o bibliotece Paging znajdziesz w tych materiałach:
Ćwiczenia z programowania
- Podstawy przełączania stron na Androidzie (ćwiczenie)
- Przejście na stronę na Androidzie – ćwiczenie zaawansowane
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Wczytywanie i wyświetlanie danych podzielonych na strony
- Migracja na paging 3
- Strona z sieci i bazy danych