Omówienie biblioteki Paging Jest częścią Android Jetpack.
Biblioteka Paging pomaga wczytywać i wyświetlać strony danych z większego zbioru danych z pamięci lokalnej lub przez sieć. Dzięki temu aplikacja może wydajniej wykorzystywać zarówno przepustowość sieci, jak i zasoby systemowe. Komponenty biblioteki Paging są zaprojektowane tak, aby pasowały do zalecanej architektury aplikacji na Androida, bezproblemowo integrowały się z innymi komponentami Jetpack i zapewniały najwyższej klasy obsługę Kotlina.
Zalety korzystania z biblioteki Paging
Biblioteka Paging zawiera te funkcje:
- Buforowanie w pamięci podręcznej pamięci RAM danych podzielonych na strony. Dzięki temu aplikacja będzie efektywnie korzystać z zasobów systemowych podczas pracy z danymi podzielonymi na strony.
- Wbudowana deduplikacja żądań, która pomaga zapewnić, że aplikacja efektywnie wykorzystuje przepustowość sieci i zasoby systemowe.
- Najwyższej klasy obsługa współprogramów i przepływów w języku Kotlin.
- Wbudowana obsługa błędów, w tym możliwość odświeżania i ponawiania prób.
Konfiguracja
Aby zaimportować komponenty stronicowania do aplikacji na Androida, dodaj do pliku build.gradle aplikacji te zależności:
Kotlin
dependencies { val paging_version = "3.4.2" implementation("androidx.paging:paging-common:$paging_version") // Jetpack Compose integration implementation("androidx.paging:paging-compose:$paging_version") }
Dynamiczny
dependencies { def paging_version = "3.4.2" implementation "androidx.paging:paging-common:$paging_version" // Jetpack Compose integration implementation "androidx.paging:paging-compose:$paging_version" }
Architektura biblioteki
Komponenty biblioteki Paging działają w 3 warstwach aplikacji:
- Warstwa repozytorium
- Warstwa
ViewModel - Warstwa interfejsu
W tej sekcji opisujemy komponenty biblioteki Paging, które działają w poszczególnych warstwach, oraz sposób, w jaki współpracują ze sobą, aby wczytywać i wyświetlać dane podzielone na strony.
Warstwa repozytorium
Głównym komponentem biblioteki Paging w warstwie repozytorium jest PagingSource. Każdy obiekt PagingSource definiuje źródło danych i sposób pobierania danych z tego źródła. Obiekt PagingSource może wczytywać dane z dowolnego pojedynczego źródła, w tym ze źródeł sieciowych i lokalnych baz danych.
Innym komponentem biblioteki Paging, którego możesz użyć, jest RemoteMediator. Obiekt RemoteMediator obsługuje stronicowanie z warstwowego źródła danych, takiego jak sieciowe źródło danych 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, który łączy warstwę ViewModel z interfejsem, to PagingData. Obiekt PagingData to kontener na zrzut danych podzielonych na strony. Wysyła zapytanie do obiektu PagingSource i zapisuje wynik.
Warstwa UI
Główny interfejs API interfejsu stronicowania to collectAsLazyPagingItems(). Udostępnia ona elementy ze stron jako listę danych, które mogą być łatwo wykorzystywane przez komponenty układu leniwego w Compose, takie jak LazyColumn i LazyRow.
Dodaj bibliotekę androidx.paging:paging-compose, aby używać interfejsów API zgodnych z Compose, które umożliwiają interfejsowi automatyczne reagowanie na wczytywanie danych, aktualizacje i błędy bez konieczności stosowania adapterów czy logiki porównywania. Użyj funkcji rozszerzenia collectAsLazyPagingItems() w Flow<PagingData>, aby przekazać zwrócony obiekt LazyPagingItems do items() w LazyColumn.
@Composable fun MessageList(pager: Pager<Int, Message>) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } }
Więcej informacji znajdziesz w sekcji Duże zbiory danych (stronicowanie).
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
- Wczytywanie i wyświetlanie danych podzielonych na strony
- Migracja do Paging 3
- Strona z sieci i bazy danych