Omówienie biblioteki Paging części Androida Jetpack.
Biblioteka Paging pomaga wczytywać i wyświetlać strony danych z większego zbioru danych przechowywanego lokalnie lub w sieci. Dzięki temu aplikacja może wydajniej korzystać z przepustowości sieci i zasobów systemowych. Komponenty biblioteki Paging są zaprojektowane tak, aby pasowały do zalecanej architektury aplikacji na Androida, dobrze integrowały się z innymi komponentami Jetpack i zapewniały obsługę języka Kotlin na najwyższym poziomie.
Zalety korzystania z biblioteki Paging
Biblioteka Paging obejmuje te funkcje:
- Pamięć podręczna w pamięci na potrzeby danych podzielonych na strony. Dzięki temu aplikacja może wydajnie korzystać z zasobów systemowych podczas pracy z danymi podzielonymi na strony.
- Wbudowana deduplikacja żądań, która pomaga aplikacji wydajnie korzystać z przepustowości sieci i zasobów systemowych.
- Obsługa na najwyższym poziomie korutyn i przepływów w języku Kotlin.
- Wbudowana obsługa obsługi błędów, w tym możliwości odświeżania i ponawiania.
Konfiguracja
Aby zaimportować komponenty Paging do aplikacji na Androida, dodaj te zależności do pliku build.gradle aplikacji:
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 każdej warstwie, 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 określa źródło danych i sposób ich pobierania 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żywać, jest
RemoteMediator. Obiekt RemoteMediator obsługuje stronicowanie z warstwowego źródła danych, takiego jak źródło 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.
Komponentem, który łączy warstwę ViewModel z interfejsem, jest
PagingData. Obiekt PagingData to kontener migawki danych podzielonych na strony. Wysyła zapytanie do
PagingSource obiektu i
zapisuje wynik.
Warstwa interfejsu
Głównym interfejsem API Paging UI jest collectAsLazyPagingItems(). Udostępnia on elementy podzielone na strony jako listę danych, które mogą być łatwo wykorzystywane przez komponenty układu leniwego Compose, takie jak LazyColumn i LazyRow.
Aby używać interfejsów API zgodnych z Compose, które umożliwiają automatyczne reagowanie interfejsu na wczytywanie, aktualizacje i błędy danych bez konieczności używania adapterów ani logiki różnicowania, dodaj bibliotekę androidx.paging:paging-compose. Użyj funkcji rozszerzenia
collectAsLazyPagingItems() w Flow<PagingData>
, aby przekazać zwrócony 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 artykule 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 biblioteki Paging 3
- Strona z sieci i bazy danych